Problema con un ejercicio

Nicolas
10 de Mayo del 2010
Tengo dudas sobre un problema.
El enunciado dice asi:
Se pide hacer un programa en el cual se permita el ingreso de números. Se pide que el mismo muestre por pantalla todos aquellos Números Semiperfectos
a) El promedio de los numeros semiperfectos
b) Un ranking de los 10 números semiperfectos más chicos ingresados ordenados en forma ascendente

Para los que no saben los numeros semiperfectos son aquellos que algunos de sus divisores suman dicho numero. Por ejemplo:
24, sus divisores son: 1,2,3,4,6,8,12
12+8+4= 24

El tema es que no se como hacer que el algoritmo escoja algunos de esos divisores para que de dicho numero. Me dijeron de guardarlo de una variable e ir probando con los mayores y si se pasa de ese numero, descartarlo y seguir con otro. Me está volviendo loco. Si alguno me puede ayudar se lo agradeceria.
Tengo que hacerlo en pseudocodigo, el pasarlo a C es la otra etapa. Smile

gera
12 de Mayo del 2010
mira, yo tengo ese programa, la verdad no se si esta es la forma mas eficiente de hacerl, pero funciona,mmm... pero como esto no se trata de que solo lo copies y lo peges pues solo te voy a decir como lo saque. la foma que encontre de sumar esos digitos fue haciendolo con ayuda de numeros binarios, te explico:
(en tu caso del 24 eeee... bueno mejor con el 10 y aunque no sea un numero semiperfecto mejora la vision de lo que se trata)
el nueve tiene n=2 divisores el 1 y el 3, sus posibles sumas entre ellos son (1),(3),(5),(1+3), curiosamente las posibles sumas son (2^n)-1, entonces con esta informacion solo poedemos ver estos posibles numeros binarios (se van visualizando ordenadamente)
01: este representa(3)num 1 en dec
10: este (1) num 2 en dec
11: este (1+3) num 3 en dec
asi se suman todos sus divisores entre si,
otro ejemplo con el numero 18 que es numero semiperfecto
como en este sus divisores son n=5 1,2,3,6,9 entonces tenemos (2^5)-1 o sea 31 sumas y poniendo los numeros binarios seria:
00001: (9)
00010: (6)
00011: (6+9)
.
.
.
00111:(3+6+9) num 7 en dec esta suma es 18 y la que estamos buscando para saber si es numerp semi o no.
Espero me hayas entendido.
Saludos

Gera Flo
12 de Mayo del 2010
perdon por el ejercicio, pero no me di cuenta que esta mal, ahora si te lo pongo bien.

(en tu caso del 24 eeee... bueno mejor con el 9 y aunque no sea un numero semiperfecto mejora la vision de lo que se trata)
el nueve tiene n=2 divisores el 1 y el 3, sus posibles sumas entre ellos son (1),(3),(1+3), curiosamente las posibles sumas son (2^n)-1, entonces con esta informacion solo poedemos ver estos posibles numeros binarios (se van visualizando ordenadamente)
lo que se hace con los numeros binarios es tomamos el primer numero, luego tomamos el primer digito y si es uno lo ponemos en una suma, caso que sea cero simplemente lo ignoramos.
01: este representa (3) ,num 1 en dec
10: este (1) ,num 2 en dec
11: este (1+3) ,num 3 en dec
ahora si espero que este un poco mas claro.