infoarena

infoarena - concursuri, probleme, evaluator, articole => Teme => Subiect creat de: Ionescu Raluca din Martie 21, 2015, 19:51:27



Titlul: Indicatorul lui Euler in c++
Scris de: Ionescu Raluca din Martie 21, 2015, 19:51:27
Buna! Ma puteti  ajuta si pe mine la o problema ? :) 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.:)
  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 :)


Titlul: Răspuns: Indicatorul lui Euler in c++
Scris de: George Marcus din 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? :)


Titlul: Răspuns: Indicatorul lui Euler in c++
Scris de: Ionescu Raluca din 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;
}


Titlul: Răspuns: Indicatorul lui Euler in c++
Scris de: George Marcus din 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(....
  ...
}


Titlul: Răspuns: Indicatorul lui Euler in c++
Scris de: Ionescu Raluca din 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 ?  :) Cum as putea sa memorez penultimul r? mersi pentru mesaj :)


Titlul: Răspuns: Indicatorul lui Euler in c++
Scris de: George Marcus din 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.


Titlul: Răspuns: Indicatorul lui Euler in c++
Scris de: Ionescu Raluca din Martie 22, 2015, 20:26:59
Mersi mult.. am reusit sa o fac  :D