Código C++:
Ver original#include <stdio.h>
void main (void)
{
int i,num,mitad,suma=1; // como 1 siempre es divisor ya le damos el valor de 1 a la suma.
i=2;
mitad=num/2; // Buscamos solo hasta la mitad ya que matemáticamente de la mitad al final solo...
// ...es divisible entre 1 o el mismo y en este caso los desechamos.
while(i<=mitad)
{
if(num%i==0)
suma+=i;
i++;
}
if ((suma==num)&&(num!=1))
printf("El numero %d es perfecto.", num
); else
printf("El numero %d no es perfecto.", num
); }
Encontré una versión mas optima en una pagina por ahí.
No se donde por que se me corgo la pc XDD
Pero reduce la carga, esta comentado. ;)