rayos
ivancea96 te me adelantaste! estaba preparando la respuesta jejeje igual allí voy (en gran parte para repetirte)
lo importante aquí no es la ram, ya que el programa solo usa 3 int (en total 12bytes) + el programa en si que dudo que llegue a 100kb... esto no llegará a 1mb de ram...
el problema aquí es el tiempo de procesamiento, es decir la velocidad del procesador contra la cantidad de operaciones hechas, por la estructura de tu programa el hace x! operaciones donde x es MAX
es decir cada paso la cantidad de cálculos aumenta brutalmente
por otro lado algo que tarda es el printf, es preferible que guardes en un array y luego imprimas, es más rápido guardar 4bytes en la ram que iniciar todo un proceso para imprimir en pantalla
realmente no estoy claro sobre tu proceso de los "números perfectos" pero intenta buscar alguna formula que te resuma el ciclo
-------agrego--------
estuve investigando y según Euclides los números perfectos se basan en esta formula
donde "n" es un numero primo... esa es tu solucion
ej:
n = 2: 21 × (22 – 1) = 6
n = 3: 22 × (23 – 1) = 28
n = 5: 24 × (25 – 1) = 496
n = 7: 26 × (27 – 1) = 8128
esa forma debe ser infinitamente más ligera para el procesador especialmente si lo haces con desplazamiento de bits, porque son potencias de 2