Codice:
#include <stdio.h>
int limite;
int divisore;
int CountPerfect = 0;
int perfect(int limit);
int main()
{
printf("ora calcolero' tutti i numeri perfetti da 1 a: ");
scanf("%d", &limite);
divisore = limite -1;
//printf("divisore(%d) = limite(%d) -1\n", divisore, limite);
perfect(limite);
getch();
return 0;
}
int perfect(int limite)
{
if(limite == 0)
{
return 0;
}
if(divisore == 0)
{ if(CountPerfect == limite)
{
printf("\n%d e un numero perfetto\n", limite);
getch();
}
CountPerfect = 0;
//printf("CountPerfect = 0\n");
limite--;
divisore = limite - 1;
//printf("divisore(%d) = limite-2(%d)\n", divisore, limite);
//printf("Riinizia la funzione con limite-1 (%d)\n", limite);
//getch();
return perfect(limite);
}
if((limite % divisore) == 0)
{
//printf("Limite (%d) %% Divisore (%d) = 0\n", limite, divisore);
//printf("CountPerfect = %d\n" ,CountPerfect);
CountPerfect += divisore;
//printf("CountPerfect + divisore = %d\n",CountPerfect);
divisore -= 1;
return perfect(limite);
}
if(!((limite % divisore) == 0))
{
divisore -= 1;
return perfect(limite);
}
}