Llamemos S a la sumatorio de todos los productos diferentes posibles a partir de los factores primos que descomponen al numero n.
Para no liar con sumatorios hago un ejemplo con un n que sea el producto de 3 primos
\( n=p_1p_2p_3 \)
como queremos un numero perfecto impar entonces \( p_i=2 \) estará prohibido.
si desarrollamos la sumatoria de factores tenemos
\( s=1+p_1+p_2+p_3+p_1p_2+p_1p_3+p_2p_3 \)
en el caso que \( n=s \) tendremos un Primero perfecto impar
supongamos que \( s\neq n \) pero queremos agregar otro primo y probar un nuevo \( N=n\cdot p_4 \)
entonces \( N=p_1p_2p_3p_4 \)
y ahora la sumatoria de factores será S que incluirá todos los términos de sumatoria anterior s, y los repetirá multiplicándolos por \( p_4 \) y además agrega a \( n \) como factor
\( S=s+s\cdot p_4+ n \)
y queremos ver que si se cumple \( S=N \)
\( s+sp_4+n=p_4n \)
de donde
\( s+sp_4=p_4n-n \)
\( s(p_4+1)=n(p_4-1) \)
\( 1<\dfrac{p_4+1}{p_4-1}=k=\dfrac{n}{s} \)
A que voy con todo esto , es reproducible a cualquier numero de primos x, entonces, en el dominio de los primos esta relación k tiene máximo 3 y mínimo 1 y además \( \lim\limits_{p_4\to\infty}\dfrac{p_4+1}{p_4-1}=1 \) y es una cota inferior arribable por la relación \( n/s \) , que ya tenemos como dato de algún calculo anterior,
Entonces cuando ya tenemos un conjunto previo de x primos cualesquiera calculamos n y s , solo hay que probar primos desde el numero 3, la relación \( k \) ira cayendo hasta alcance a n/s y si no verifica la igualdad no habrá un número perfecto, es decir solo hay que probar mientras que \( 3\leq p_{x+1}<\dfrac{n}{s} \) ese es el rango donde hay posibilidades de hallar el numero perfecto, pero aumentando el valor de los primos más allá para que k sea menor que n/s serán innecesarios ya que no pueden verificar nunca la igualdad.
La idea del algoritmo es ir variando el grupo de x primos y solo checar si es posible agregar un primo adicional que verifique estar debajo de n/s, lo que limitaría enormemente la cantidad de cálculos innecesarios para primos elevados que nunca arrojarían un positivo.
Cuando no sea posible agregar mas primos se va variando el grupo previo, del cual ya sabemos n y s
Que inconveniente le ven ...
No tengo limites de cantidad de cifras, la idea es sumar , restar, multiplicar y dividir cifras en strings de texto, así que puedo operar con millones de dígitos en un solo numero, (que es mucho mas lento que usar el poder del pc pero que con unos pocos número ya se sale del rango de los enteros), ....lo que no tengo es tiempo de maquina, para probar todos los primos que hay hasta esos números, de hecho tengo una tabla con los primeros 16000000 de primos hasta los 380000000 aproximadamente, como para empezar.