infoarena

infoarena - concursuri, probleme, evaluator, articole => Teme => Subiect creat de: A Cosmina - vechi din Februarie 28, 2009, 20:05:06



Titlul: nr perfecte
Scris de: A Cosmina - vechi din Februarie 28, 2009, 20:05:06
Am urmatoarea problema:
Ceea ce am scris eu nu este bine pentru ca daca introduc de ex 6 apare i=1,i=4,i=6...Dar 4 nu e nr perfect ({1,2}=D4; 1+2=3; 3 !=4. la fel si cu 2).Ajutor!

Afisati toate numerele perfecte pana la un numar intreg citit.
*Un nr este perfect daca este egal cu suma divizorilor lui (fara el insusi).

Cod:
#include <iostream.h>
main()
{
int n,i,j;
cout<<"n=";cin>>n;
for (i=1;i<=n;i++)
{
for (j=1;j<=i;j++)
if ()i%j==0) && (i==j+j) cout<<"i="<<i;
}
}

Cum sa fac sa afiseze ceea ce trebuie?  :?


Titlul: Răspuns: nr perfecte
Scris de: Sima Cotizo din Februarie 28, 2009, 20:13:21
Conditiile pe care le pui in if sunt gresite - tu acolo verifici daca numarul este par. Incearca asa:
Cod:
for (i=1; i<=N; ++i) {
int suma = 0;
for (j=1; j<i; ++j)
if ( i%j==0 ) suma += j;
if ( suma==i ) cout << i;
}


Titlul: Răspuns: nr perfecte
Scris de: alexandru din Februarie 28, 2009, 20:16:33
Pai   poti  determina toti divizorii numarului si apoi sa vezi daca respecta cea ce ai zis:
Cod:
//.....
int main()
  {int s;
      cout<<"n="; cin>>n;
      if(n>=1) cout<<"1 ";
      for(i=2;i<=n;i++)     //parcurg toate numerel de la 2 ...pana la n
         {s=1;   //suma  initializez cu  1,fiind divzorul tuturor numerelor
          for(j=2;j<i;j++)  // i-au tot divizorii mai mici ca si i
             {if(i%j==0) s+=j;  //daca este divizor  il adun la suma
              if(j*j>=i&&s==1) break;     //daca nu a gasit un divizor pana la sqrt(s) inseamna ca numarul este  prim :D
              }
          if(s==i) cout<<i<<" ";
        }
   system("PAUSE");
   return 0;
  }
[later] am corectat , la mine al doilea for mergea pana la  i :D


Titlul: Răspuns: nr perfecte
Scris de: A Cosmina - vechi din Februarie 28, 2009, 20:24:04
multumesc :peacefingers: a lui sima_cotizo mi s epare mai simpla, dar o s-o incerc si pe-a 2a...mersi inca o data :wink:


Titlul: Răspuns: nr perfecte
Scris de: alexandru din Martie 01, 2009, 09:08:31
:)) eu cred ca tu n-ai inteles  programul, sau modul de gandire, algoritmii sunt aceeasi numai ca la mine am pus si o conditie de break atata tot :P