Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: nr perfecte  (Citit de 4672 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
miculprogramator
Nu mai tace
*****

Karma: 65
Deconectat Deconectat

Mesaje: 306



Vezi Profilul
« : 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?  Confused
Memorat
sima_cotizo
Nu mai tace
*****

Karma: 219
Deconectat Deconectat

Mesaje: 596



Vezi Profilul
« Răspunde #1 : 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;
}
Memorat
alexandru92
Nu mai tace
*****

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« Răspunde #2 : 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 Very Happy
« Ultima modificare: Ianuarie 26, 2010, 14:13:14 de către alexandru » Memorat
miculprogramator
Nu mai tace
*****

Karma: 65
Deconectat Deconectat

Mesaje: 306



Vezi Profilul
« Răspunde #3 : 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
Memorat
alexandru92
Nu mai tace
*****

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« Răspunde #4 : Martie 01, 2009, 09:08:31 »

Smile) 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 Tongue
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

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