jueves, 26 de febrero de 2026

La suma de potencias de cifras es otra potencia

En este blog se han desarrollado muchas curiosidades similares, y ahora deseo estudiar en qué números se cumple que una suma de potencias de sus cifras se convierte en otra potencia. Por ejemplo, en el 34, 32+42=52, porque es una terna pitagórica, o en 123 se cumple que 13+23+33=62

Para jugar un poco con esta cuestión necesitamos dos funciones, que son SUMACIFRAS, que nos sume potencias de cifras, y ESPOTENCIA, que determine si un número es potencia entera o no. La primera, en su versión completa con exponentes, la puedes encontrar desarrollada en este blog, por ejemplo, en

https://hojaynumeros.blogspot.com/2024/01/un-numero-y-sus-cifras-1-niven.html.

Posee dos parámetros, el número a descomponer en cifras y el exponente.

La función ESPOTENCIA admite variantes, pero su última versión es algo complicada de desarrollar. Está presentada en la entrada

https://hojaynumeros.blogspot.com/2025/11/un-numero-como-diferencia-entre.html

Si no te apetece entrar en esas explicaciones en VBASIC, con el lenguaje PARI quedan muy simples:

sumacifras(n,k)=sum(i=1, #n=digits(n), n[i]^k)
espotencia(n)=ispower(n)


Función espotsumcifraspot$(n,tope)

Uniremos las dos funciones en una sola, para determinar qué números cumplen la propiedad pedida. Le indicaremos el número y el tope máximo de búsqueda con exponentes, porque los resultados pueden tener una magnitud tan grande que no sean exactos en VBASIC. Por cada solución que se obtenga aparecerán también los números anagramáticos con ella. Por ejemplo, si 115 es solución (12+12+52=33), también lo serán 151 y 511.

 

Public Function espotsumcifraspot$(n,tope)

Dim s, I,e

Dim ss$

 

ss = ""

For i = 2 To tope ‘Se prueba con varios exponentes de cifras

s = sumacifras(n, i)’Sumacifras con un exponente

e= espotencia(s)

If e > 1 Then ss = ss + " E1: " + Str$(i)+ “ E2: “+str$(e)

‘Si la suma es potencia, tenemos solución nueva, E1 exponente de las cifras y E2 el de la suma

Next i

If ss = "" Then ss = "NO"

espotsumcifraspot = ss

End Function

 

Hay que advertir que el valor de E2 no es único, porque, por ejemplo, el número 64 es cuadrado, cubo y sexta potencia. La función te da un valor, para afirmar que es potencia, pero no tiene que coincidir con el esperado.

 

Otra advertencia es que la existencia de cifras nulas puede también producir resultados no esperados. Si se quiere matizar más se puede añadir la condición de que no existan ceros en su representación en base 10. Esta sencilla función devuelve VERDADERO si no existen cifras nulas:

 

Function sinceros(n) As Boolean

Dim h, i, m

Dim sin As Boolean

h = n

sin = True

While h > 9 And sin

i = Int(h / 10)

m = h - i * 10

If m = 0 Then sin = False

h = i

Wend

If h = 0 Then sinceros = False Else sinceros = sin

End Function

 

Es optativo añadirle esa condición al principio de la función. Con la función PRODUCIFRAS basta con exigir que el producto no sea nulo.

La puedes encontrar en

https://hojaynumeros.blogspot.com/2018/09/permutacion-de-cifras-al-sumar-su.html

 

Así lo haremos en PARI: sinceros(n)=vecprod(digits(n))<>0

 

Números con la propiedad esperada

 

Con la advertencia de que puede faltar alguno por la existencia de un tope, la siguiente tabla contiene los primeros números sin cifras nulas que cumplen la propiedad. Llaman la atención los resultados de 22, 44 y 88, que no caben en la imagen (algo fácil de razonar con potencias de 2), y el hecho ya explicado, de que aparecerán como solución todos los números anagramáticos con la primera, como 21 con 12 o 132 con 123.


 

La tabla está confeccionada con tope 10 para los exponentes, pero si uso el 20 aparecen resultados falsos. Ya se sabe lo que se debe hacer: pasar a PARI. Se puede usar este código:

 

sumacifras(n,k)=sum(i=1, #n=digits(n), n[i]^k)

producifras(n)=vecprod(digits(n))

espotsumcifraspot(n,tope)=my(ss=List(),i,e,s,p=producifras(n));for(i=2,tope,s=sumacifras(n, i);e=ispower(s);if(e>1&&p>0,listput(ss,"E1:");listput(ss,i);listput(ss,"E2: ");listput(ss,e)));ss

for(i=11,135,s=espotsumcifraspot(i,30);if(#s<>0,print1(i,", ")))

 

Si aumento el tope a 30 coinciden los resultados, luego puedo confiar en que estos sean válidos:

12, 21, 22, 34, 36, 43, 44, 48, 63, 68, 84, 86, 88, 115, 122, 123, 126, 132,

 

Aumentando el rango:

 

12, 21, 22, 34, 36, 43, 44, 48, 63, 68, 84, 86, 88, 115, 122, 123, 126, 132, 148, 151, 162, 168, 184, 186, 212, 213, 216, 221, 231, 236, 244, 261, 263, 269, 296, 312, 321, 326, 333, 345, 354, 355, 362, 366, 418, 424, 435, 442, 447, 453, 474, 481, 488, 511, 534, 535, 543, 553, 568, 586, 612, 618, 621, 623, 629, 632, 636, 658, 663, 667, 676, 681, 685, 692, 744, 766, 814, 816, 841, 848, 856, 861, 865, 884, 926, 962, 999, …

 

Observamos que presentan una frecuencia alta de aparición, en parte por la existencia de anagramáticos. Por eso se puede plantear un filtro según el exponente usado en las cifras. Cambiando la variable que devuelve la función es posible realizar ese filtro. Para eso he modificado ligeramente el código. Por ejemplo, con resultado cubo aparecen:

 

115, 151, 345, 354, 355, 435, 453, 511, 534, 535, 543, 553, 568, 586, 658, 685, 856, 865, 1134, 1143, 1156, 1165, 1314, 1341, 1413, 1431, 1516, 1561, 1615, 1651, 2234, 2243, 2324, 2342, 2423, 2432, 2667, 2676, 2766, 3114, 3141, 3224, 3242, 3411, 3422, 3468, 3486, 3648, …

Por  ejemplo, 3648 es solución porque 32+62+42+82=53

 

Los he comprobado con dos procedimientos.

 

También podemos buscar exponentes de las cifras. Por ejemplo, buscamos los que sean mayores o iguales que 5, y conseguimos el listado:

 

22, 44, 88, 333, 999, 1111, 1224, 1242, 1339, 1393, 1422, 1933, 2124, 2142, 2214, 2222, 2241, 2412, 2421, 2448, 2484, 2844, 3139, 3193, 3319, 3333, 3391, 3913, 3931, 4122, 4212, 4221, 4248, 4284, 4428, 4444, 4482, 4669, 4696, 4824, 4842, 4966, 5555, 6469, 6496, 6649, 6666, 6694, 6946, 6964, 7777, 8244, 8424, 8442, 8888, 9133, 9313, 9331, 9466, 9646, 9664, 9999, …

 

Nos encontramos con soluciones especiales por la repetición de cifras. Por ejemplo, 3913: 35+95+15+35=2442

 

También podemos fijar qué exponentes deseamos, siempre que adaptemos el código. Por ejemplo, con exponentes 3 y 3 y con cifras crecientes tenemos estos dos casos:

345: Es un resultado clásico: 33+43+53=63

1156: 13+13+53+63=73

 

Con exponentes con bastante diferencia:

 

Con cifras elevadas a 7, el número 57888 y sus anagramáticos cumple:

 

57+77+87+87+87=26822

 

Tenemos las herramientas para seguir investigando, pero vendrían bien unos equipos más potentes para llegar a siete u ocho cifras.

 

 

 

 

 

No hay comentarios: