Devo fare un programma che risolva il seguente problema:
Un numero si dice perfetto (vedi definizione su Wikipedia
http : //it.wikipedia.org/wiki/Numero perfetto) quando `e uguale alla somma di
tutti i suoi divisori escluso se stesso. Ad esempio, il numero 28, divisibile per 1, 2, 4,
7, 14 `e un numero perfetto (28 = 1 + 2 + 4 + 7 + 14): lo stesso per 6 che `e divisibile
per 1, 2 e 3.
6 = 1 + 2 + 3
28 = 1 + 2 + 4 + 7 + 14
Un numero si dice abbondante se la somma dei suoi divisori interi `e maggiore
del numero. Ad esempio, 24 che `e divisibile per 1, 2, 3, 4, 6, 8, 12, quindi 24 <
1 + 2 + 3 + 4 + 6 + 8 + 12 = 36, `e un numero abbondante. Un numero si dice
difettivo se la somma dei suoi divisori interi `e minore del numero. Ad esempio, 27
che `e divisibile per 1, 3, 9, quindi 27 > 1 + 3 + 9 = 13, `e un numero difettivo.
Scrivere una funzione che preso in input un numero positivo n stampi 0 se n `e un
numero perfetto, −1 se `e difettivo ed 1 se `e abbondante.
Questo il programma che ho compliato ma non da nessun risultato, aiutatemi a trovare l'errore:
#include <stdio.h>
int funzione(int);
int main()
{
int n;
scanf("%d", &n);
return 0;
}
int funzione(int n)
{
int i = 1, r, tot = 0;
for(i = 1; i < n; i++)
r = n%i;
tot = tot + i;
}
if (tot == n)
printf("0");
if (r < n)
printf("2");
if (r > n)
printf("1");
return 0;
}
Grazie per l'aiuto!!!!