Ciao a tutti, sto cercando di risolvere un esercizio che richiede di trovare tutti i numeri perfetti da 1 a 1000 (si dicono tali quando la somma di tutti i fattori positivi è uguale al numero di partenza escludendo il numero stesso) tramite una funzione che deve essere definita da me. Il mio problema è che mi esce 24 e non dovrebbe comparire.
Grazie per tutte le risposte ragazzi, ps sto imparando da autodidatta quindi se vi sembra che io abbia dei vizi/mancanze da correggere fatemelo sapere.
Il codice è questo:
Grazie per tutte le risposte ragazzi, ps sto imparando da autodidatta quindi se vi sembra che io abbia dei vizi/mancanze da correggere fatemelo sapere.
Il codice è questo:
C:
#include <stdio.h>
int perfect(int k, int x);
int main()
{
puts("Di seguito verranno stampati tutti i numeri perfetti da 1 a 1000");
for (int i = 1; i<=1000;i++) //tramite un for andiamo a testare tutti i numeri fino a 1000
{
int sum = 0;
for (int j = 1; j <= i; j++)//j individua il divisore
{
sum += perfect(i, j);
if (sum == i) printf_s("%d\n", i);
}
}
}
int perfect(int k, int x)//la funzione calcola i fattori dei numeri i progressivi
{
int f = k % x;
if (f == 0) return x;
else return 0;
}