PDA

Ver la versión completa : 5to numero perfecto



freedom
12/05/2011, 22:45
Bueno gente, no se si les he comentado pero estoy estudiando programacion y me han presentado el clasico problema de encontrar numeros perfectos.

Lo he podido resolver satisfactoriamente ya que el programa que hice cumplio con la expectativa del profesor que era encontrar hasta el 4 numero perfecto.

El problema es que yo, ambicioso como soy (dictamen de mi naturaleza humana) no me logro conformar con los primeros 4. Por lo visto, el codigo que genere no es lo suficientemente eficiente para esto, ya que hasta el 4to lo encuentra en 1 segundo, pero el quinto tarda eternidades (es de 8 cifras parece ser).

Estoy programando en C, que es lo que nos enseñan

Paso el codigo que hice:


#include <stdio.h>
#include <conio.h>
#include <cstdlib.h>

/*uso el cstdlib porque por alguna razon mi compilador no reconoce la funcion clrscr().
Si alguien sabe porque es esto y como solucionarlo, por favor informeme. Uso code::blocks */

main()
{
register long int CONT , DIV , SUMA ;

/* notese tambien que intente usar register para ver si acelerando el acceso a las variables
podia funcionar mas rapido, pero no es asi. De hecho parece que no cambia nada */

system("cls") ;

printf( "\n\t\t ESTOS SON LOS NUMEROS PERFECTOS \n\t\t" ) ;

CONT=1 ;

while( CONT < 2147483647 )
{
SUMA=0 ;
for( DIV=1 ; DIV < CONT ; DIV++ )
{
if( CONT % DIV == 0 )
SUMA = SUMA + DIV ;
else;

}
if( SUMA == CONT)
printf( "\n\t %d \n\t" , CONT );
else ;
CONT++ ;

}

getch() ;
}

Suerte en la vida