Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Indicatorul lui Euler in c++  (Citit de 5907 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
Raluca_Ionescu
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 6



Vezi Profilul
« : Martie 21, 2015, 19:51:27 »

Buna! Ma puteti  ajuta si pe mine la o problema ? Smile Trebuie sa scriu un algoritm  in code blocks care sa determine numarul de numere naturale mai mici decat n , relativ prime cu n.
Ati putea sa imi spuneti ce este in neregula la algoritmul asta ?? Tin sa mentionez ca sunt incepatoare ( clasa a 9 a). Multumesc.Smile
  int n ,i ,e, r;
    cout<<"n= ";cin>>n;
      i=1;
   while(i<=n && i++)

        e=i;
        while(e!=0)
        {
            r=n%e;
            n=e;
            e=r;
        }
     if(r==1)
    cout<<i<<" ";
Aici am inceract doar sa afisez numerele prime cu n Smile
Memorat
PlayLikeNeverB4
Nu mai tace
*****

Karma: 212
Deconectat Deconectat

Mesaje: 721



Vezi Profilul
« Răspunde #1 : Martie 22, 2015, 13:30:52 »

Sa nu mai scrii asa ceva "i<=n && i++" in viata ta. Vad ca memorezi valoarea variabilei i in variabila e ca sa nu modifici i-ul. De ce nu faci asta si pentru n? Smile
Memorat
Raluca_Ionescu
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 6



Vezi Profilul
« Răspunde #2 : Martie 22, 2015, 16:09:17 »

Am incercat si asa si as vrea sa imi spui si mie unde am gresit si cum sa fac daca poti si vrei , bineinteles.. Nu fac de mult informatica si pana acum doar lucruri mai simple.
 {
    int n ,i , r;
    cout<<"n= ";cin>>n;
    for(i=1;i<=n;i++)
    while(r!=0)
    {r=n%i;
    n=i;
    i=r;
    }
    if(r==1)
    cout<<i<<" ";
return 0;
}
Memorat
PlayLikeNeverB4
Nu mai tace
*****

Karma: 212
Deconectat Deconectat

Mesaje: 721



Vezi Profilul
« Răspunde #3 : Martie 22, 2015, 16:24:07 »

Ti-am zis mai sus. In interiorul for-ului trebuie sa memorezi valoarea lui i intr-o alta variabila (tu ai pus e inainte). Dar sa faci asta si pentru n (de exemplu, m=n si apoi lucrezi cu m).

for(i=1;i<=n;i++) {
  e=i;
  m=n;
  while(....
  ...
}
Memorat
Raluca_Ionescu
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 6



Vezi Profilul
« Răspunde #4 : Martie 22, 2015, 17:40:29 »

ok ... deci programul o sa arate asa:
   
int n ,i , r, e, m,r1;
    cout<<"n= ";cin>>n;
    for(i=1;i<n;i++)
     {e=i;
      m=n;
         while(r!=0)
        {   r=m%e;
            m=e;
            e=r ;

        }
      if(r==1)
    cout<<i<<" ";
     }
Dar tot nu merge . am spus "while(r!=0) "deci se va opri cand r=0 si   r==1 o sa fie mereu falsa.... ce as putea sa fac aici ?  Smile Cum as putea sa memorez penultimul r? mersi pentru mesaj Smile
Memorat
PlayLikeNeverB4
Nu mai tace
*****

Karma: 212
Deconectat Deconectat

Mesaje: 721



Vezi Profilul
« Răspunde #5 : Martie 22, 2015, 17:47:13 »

La penultima iteratie ai e=r. Apoi la ultima iteratie, r devine 0 si faci m=e (e-ul de la iteratia anterioara, adica r-ul anterior). Deci penultimul r e m-ul de la final.
Memorat
Raluca_Ionescu
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 6



Vezi Profilul
« Răspunde #6 : Martie 22, 2015, 20:26:59 »

Mersi mult.. am reusit sa o fac  Very Happy
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines