albatros ha scritto:SIV ha scritto:if (counter==number){printf("%d è un numero perfetto\n\n");}
Dovresti dire a printf quale variabile intera vuoi stampare...
Vorrei spararmi per questo

, comunque il source era sballato completamente.
@ccts2002Grazie mille, tralasciando la questione matematica di dividere il numero per tutti i numeri minori della sua metà, il source funziona. Ho fatto in modo di metterlo in un ciclo for di 1000 volte, per calcolare i primi numeri perfetti fino a 1000.
Sono riuscito a fare in modo di stampare a video solo i numeri primi, però non sono riuscito a fare:
- Codice: Seleziona tutto
quando è appurato che il numero è perfetto, visualizzare anche i suoi fattori
Poichè nel source di ccts2002, i fattori venivano stampati sempre, ho dovuto commentare la riga, ecco il source che è quasi a conclusione
- Codice: Seleziona tutto
#include <stdio.h>
int perfect(int a)
{
int i,tmp=1;
for ( i = 2 ; i <= a/2 ; i++){
if( a % i == 0 ) {
tmp += i;
//printf("%d+",i);
} else continue;
}
if (tmp == a)
return 1;
else return 0;
}
int main ()
{
int j,ris;
for ( j = 2 ; j <= 1000 ; j++){
ris = perfect(j);
if (ris==1){printf("Il numero %d è perfetto!\n",j);}
}
return 0;
}
Ed ecco l'output:
- Codice: Seleziona tutto
muller@sab-muller ~/Test C $ ./a.out
Il numero 6 è perfetto!
Il numero 28 è perfetto!
Il numero 496 è perfetto!