Informatică, întrebare adresată de stefan123zid, 8 ani în urmă

Buna ! As vrea si eu un program facut in c++ care sa respecte urmatoarea cerinta: Sa se afiseze primele n perechi de numere prietene( suma divizorilor primului numar este egala cu al doilea numar si invers).
Eu am incercat ceva de genul acesta :

#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("date.in")
ofstream g ("date.out")
int n,k,s,s1,d,y,x,k,gasit;
f>>n;
while(k<n)
{
s=0;
s1=0;
for(d=2;d<=x;d++)
if(x%d==0)
s=s+d;
y=x+1;
while(gasit==0)
{
if(y==s)
{
for(d=2;d<=y;d++)
if(y%d==0)
s1=s1+d;
if(s1==x)
{
gasit=1;
k++;
g<<x<<" "<<y;
}
}
else
y++;
}
x=y;
}
return 0;
}

Imi puteti modifica programul meu (e facut in codeblocks,dar acum l am scris de pe telefon si nu stiu daca l am copiat perfect.)Am dat 100 de puncte deoarece as dori si explicatii langa anumite linii din program ( se fac cu "///" sau "//").Multumesc anticipat.



andrei750238: Buna !
Sunt cateva probleme serioase cu programul (functia main lipseste, mare parte din variabile printre care x si y si gasit sunt neinitializate, nu are absolut niciun sens ca cautam y prin incrementari din momentul in care stim ca y = suma divizorilor primului numar, etc.
stefan123zid: Cum am spus si in enunt , intrebarea am pus o de pe telefon ,nu am dat ctrl c ---> ctrl v din programul meu
stefan123zid: e normal sa fie greseli de genul..
stefan123zid: eu vreau doar rezolvarea corecta

Răspunsuri la întrebare

Răspuns de andrei750238
1

#include <iostream>

#include <fstream>

using namespace std;

ifstream f ("date.in");

ofstream g ("date.out");

int main(){

int n,k,s,s1,d,x=2;

f>>n;

while(n>0){

 s=0;

 s1=0;

 //calculam suma divizorilor primului numar

 for(d=1;d<=x;d++)

  if(x%d==0)s+=d;

 //Stim ca al doilea numar trebuie sa fie egal cu suma divizorilor primului numar. Deci al doilea numar este s

       for(d=1;d<=s;d++)

  if(s%d==0)s1+=d;

       //Verificam daca suma divizorilor celui de al doilea numar e egala cu primul numar

       if(x==s1){

           //Daca am gasit perechea afiseaza

           g << x << " "<< s << endl;

           //Decrementam valoarea de numere prietene care trebuie gasit cu 1

           n--;

       }

       //Incrementam x cu 1

       x++;

}

}


stefan123zid: Multumesc!
Alte întrebări interesante