cifa
16-11-2010, 21:30
Inanzitutto salve a tutti, sono uno studente del primo anno di informatica presso la Sapienza a Roma.
Vi scrivo perchè sono in leggera difficoltà con l'esercizio
Citazione:
Un intero positivo si dice perfetto se è uguale alla somma dei suoi divisori (sia primi che non primi) escluso se stesso. Per esempio 28 è perfetto perché 28 = 1+2+4+7+14. Scrivere una funzione int perfectNumbers(int n) che dato in input un intero positivo n restituisca il numero di numeri perfetti tra 1 e ed n.
In particolare:
Io ho scritto il codice:
int perfectNumbers (int x){
int divisore;
int pN=0;
int sommadivisori;
while(x != 0){
divisore=x-1;
while (divisore != 0){
if(x%divisore == 0) sommadivisori+=divisore;
divisore-=1;
}
if (sommadivisori == x) pN+=1;
x-=1;
}
return pN;
}
Quello che succede però è che mi restituisce come valore sempre e solo pN = 1 o pN=0. Probabilmente l'errore è idiota perchè sono proprio agli inizi, ma vorrei capire dove ho sbagliato :D
Grazie mille!
Vi scrivo perchè sono in leggera difficoltà con l'esercizio
Citazione:
Un intero positivo si dice perfetto se è uguale alla somma dei suoi divisori (sia primi che non primi) escluso se stesso. Per esempio 28 è perfetto perché 28 = 1+2+4+7+14. Scrivere una funzione int perfectNumbers(int n) che dato in input un intero positivo n restituisca il numero di numeri perfetti tra 1 e ed n.
In particolare:
Io ho scritto il codice:
int perfectNumbers (int x){
int divisore;
int pN=0;
int sommadivisori;
while(x != 0){
divisore=x-1;
while (divisore != 0){
if(x%divisore == 0) sommadivisori+=divisore;
divisore-=1;
}
if (sommadivisori == x) pN+=1;
x-=1;
}
return pN;
}
Quello che succede però è che mi restituisce come valore sempre e solo pN = 1 o pN=0. Probabilmente l'errore è idiota perchè sono proprio agli inizi, ma vorrei capire dove ho sbagliato :D
Grazie mille!