Informatică, întrebare adresată de fata008, 9 ani în urmă

Un num
ă
r natural nenul se nume
ș
te
perfect
dac
ă
este egal cu suma divizorilor s
ă
i naturali
strict mai mici decât el.
Exemplu:
28
este num
ă
r perfect pentru c
ă
28=1+2+4+7+14
.
Se consider
ă
subprogramul
perfect
, cu doi parametri,
a
ș
i
b
, prin care prime
ş
te câte un
num
ă
r natural (
2

a ≤
10
9
). Subprogramul afi
ș
ea
z
ă
pe ecran, separate prin câte un
spa
ț
iu, în ordine descresc
ă
toare, toate numerele perfecte din intervalul
[a,b]
. Dac
ă
în
interval nu exist
ă
astfel de numere, subprogramul afi
ș
eaz
ă
pe ecran mesajul
nu exista
.
Scrie
ţ
i defini
ţ
ia complet
ă
a subprogramului.
Exemplu:
pentru
a=5
ș
i
b=30
, se afi
ș
eaz
ă
pe ecran:
28 6

Răspunsuri la întrebare

Răspuns de express
0
void perfect(int a, int b) { int d, x, s, ct = 0; for(x = b; x >= a; x --) { s = 0; for(d = 1; d * d < x; d ++) if(x % d == 0) s = s + d + x / d; if(d * d == x) s = s + d; if(s - x == x) { cout << x << " "; ct ++; } } if(ct == 0) cout<< "nu exista"; return; }
Alte întrebări interesante