[C con Clase] NUMEROS PERFECTOS

miguel mcubides en gmail.com
Vie Mayo 18 01:09:24 CEST 2007


Hola Andres
El pasado 2007-05-17 22:38:22, CESAR ANDRES ROMERO escribió:


CAR>         printf("Divisores de %i: ", num); 

CAR>         for(i=1;i<=(num/2);i++) 

creo que tu error está acá, no deberías usar <= sino simplemente <, por otra parte te recomiendo que no pongas num/2 dentro del for, ya que esto hace que cada iteración se tenga que calcular la división (y mi profesor de procesadores y arquitectura de computadores me ha dicho enfáticamente que la división es de las operaciones mas lentas para el pc), así que te recomiendo que uses una variable alterna, además, como es una división por dos podrías hacer un corrimiento de bits así:

int num, mit;
...
mit=num;
mit>>1;

for (int i=1; i<mit; i++)
...


CAR> 		printf("%i es perfecto.\n\a",num);

tal vez haya sido al transcribir, pero \a no es nada, probablemente pensabas en \t, espero haberte ayudado


Más información sobre la lista de distribución Cconclase