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

Să se afişeze toate numerele de k cifre care sunt numere prietene. (Două numere naturale a și b se numesc prietene dacă suma divizorilor lui a (fără a) este egala cu b și suma divizorilor lui b (fără b) este egală cu a.)

Răspunsuri la întrebare

Răspuns de andrei750238
2

#include <iostream>

#include <cmath>

using namespace std;

int sdiv(int n){

//Returneaza suma divizorilor lui n - numarul citit(fara n)

int s=0;

for(int i=1;i<=n/2;i++)

 if(n%i==0) s+= i;

return s;

}  

int main(){

int i,j,k;

 

//Citire date

cout << "k = ", cin >> k;

k = pow(10,k);

 

//Cautare numere

for(i=k/10;i<k;i++){

 for(j=i+1;j<k;j++){

  if(sdiv(i)==j && sdiv(j)==i) cout << "\n(" << i << " , " << j << " )";  

 }

}

}


andrei750238: Nota : Primele doua numere prietene sunt 220 și 284 (si sunt singurele pentru k=3)
andrei750238: Pentru k mai mare decat 3 s-ar putea sa dureze ceva pana apare un rezultat, programul nu e extrem de bine optimizat
yyyx1153: am inteles, mersiiii muult
Alte întrebări interesante