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
In particolare: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.
Io ho scritto il codice:
codice:#include<stdio.h> int perfectNumbers (int x){ int pN=0; int sommadivisori; int divisore=x-1; while(x != 0){ 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
Grazie mille!