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.

 

 

 

 

 

lunes, 16 de febrero de 2026

Sucesiones completas


En esta entrada abordaré un tema interesante, y es el de la posibilidad de que los elementos de una sucesión de números naturales, finita o infinita, generen otros números, a partir de sumas, con o sin repetición.

Ya traté ese tema en algunas entradas antiguas, como

https://hojaynumeros.blogspot.com/2010/02/frobenius-y-los-mcnuggets.html

“Frobenius y los mcnuggets”, en la que trataba el problema de las monedas necesarias para alcanzar una cantidad y el número de Frobenius.

https://hojaynumeros.blogspot.com/2012/11/descomposicion-de-un-numero-segun-una.html

En esta entrada se trataba de generar un número a partir de una lista de ellos.

En ambos casos las sucesiones eran finitas, y al sumar los elementos se podían repetir los sumandos.

También se relacionaba algo con lo que pretendo presentar ahora, la entrada sobre algoritmos voraces o codiciosos:

https://hojaynumeros.blogspot.com/2024/09/algoritmos-codiciosos-para-sumas.html


Sucesión completa

Desarrollaré aquí el tipo de sucesión más eficaz para generar todos los números naturales, el de sucesión completa.

Una sucesión de números naturales se llama completa cuando cualquier otro número natural se puede escribir como suma de elementos de esa sucesión sin repetir ninguno.

El ejemplo básico más popular es el de las potencias de 2, que da lugar al sistema binario de representación de los números. En efecto, la sucesión 1, 2, 4, 8, 16, … permite representar cualquier número como suma de algunos términos, sin repetición. La forma de conseguirlo es similar a la de los algoritmos codiciosos que traté en la entrada referenciada más arriba.

Vemos un ejemplo: representar el número 53:

Buscamos el término de la sucesión más cercano a 53 y menor que él, que es el 32, tomamos nota y restamos: 53-32=21. Reiteramos: 21-16=5, 5-4=1, con lo que obtenemos 53=32+16+4+1, que da lugar a la representación binaria 110101.

Este ejemplo nos abre camino para caracterizar las sucesiones completas. Podemos dar tres condiciones para que una sucesión sea de este tipo:

·    El primer término ha de ser 1, a1=1

·   Aunque no es imprescindible, pero sí algo operativo, la sucesión debe presentar un orden creciente.

·    Si llamamos sn a la suma de los n primeros términos de la sucesión, se debe cumplir: sn-1 ≥ an-1 para todo n ≥ 1

La primera condición es imprescindible para poder generar todos los números y que los algoritmos tengan parada. Por ejemplo, los números pares no son completos, pues nunca pueden generar un impar.

La segunda se incluye para que tengan sentido los algoritmos.

La tercera es fundamental, porque garantiza que se pueda avanzar en descubrir sumandos hasta llegar, si es necesario al 1.

Seguimos el proceso del 53 visto más arriba. Dado el número N, deberemos encontrar el mayor elemento de la sucesión que sea menor que N, en el ejemplo 32. La diferencia 21 se ha de poder tratar del mismo modo, con lo que sn-1 ha de ser suficiente para ello, es decir, sn ≥ an-1. Piénsese en el caso 63, en el que 63-32=31, y debe poder ser generado por los elementos anteriores, es decir por sn-1, y de ahí la condición sn ≥ an-1.

Si no se cumple esta condición, la sucesión no es completa. Por ejemplo, la sucesión de potencias de cuatro, 1, 4, 16, 64, …no la cumple, y, por ejemplo, no puede generar el número 70, porque 70-64=6, y 6 no se puede formar con 1 y 4. Aquí la suma 1+4+16 no es suficiente.

La sucesión de potencias de 2 la cumple, porque sn=2n-1, y da lugar a la representación binaria. Esto se logra porque no se admiten repeticiones en los sumandos. También es minimal, pues si eliminamos un término de ella, habrá números naturales que no se puedan representar. Por ejemplo, si elimino el 4, no podré representar el 6. Otra característica es que la representación es única, algo que no se contempla en las definiciones.

Existe una condición suficiente que puede sustituir a la tercera, y es que 2ak ≥ ak+1 para k≥1. El ejemplo de las potencias de 2 la cumple, pero falta ver su suficiencia. Lo razonamos con el ejemplo del N=53. La primera operación fue buscar el término menor que 53 más cercano a él, y fue el 32. Restamos y nos resultó 21 para proseguir. Lo vemos en general:

N estará entre ak y ak+1, pero ak+1 estará entre ak y 2ak, luego tendremos: ak ≤ N ≤ ak+1 ≤ 2ak. Restando ak se verificará:

0 ≤ N - ak ≤ ak

Por tanto, la siguiente diferencia (en el ejemplo, el 21) será menor que ak, y se podrá seguir el algoritmo con un término menor, hasta llegar a 1.

Ejemplo reciente

En una entrada anterior vimos la sucesión “catering perezoso”, formada por los términos de fórmula


Sus primeros términos son 1, 2, 4, 7, 11, 16, 22, 29, 37, 46, 56, 67, 79, 92, 106, 121, 137, 154, 172, 191, 211, 232, 254, 277, 301, 326, 352, 379, …
https://oeis.org/A000124

Es evidente que cumple 2ak ≥ ak+1.

2ak - ak+1 = 2(k(k+1)/2+1)-(k+1)(k+2)/2-1 = (k+1)(k-(k+2)/2)+1 =(k+1)(k/2-1)+1, y esta diferencia es positiva o cero para k>1

Podemos afirmar que esta sucesión es completa, como se afirma en la página en la que está publicada. Según esto, cualquier número natural es suma de algunos de sus términos tomados sin repetición. He efectuado sencillas comprobaciones con mi hoja de cálculo partlista

 (Ver https://www.hojamat.es/sindecimales/aritmetica/herramientas/herrarit.htm#reprenum)

He elegido el número 62 al azar, y deseo generarlo con los términos de esta sucesión 1, 2, 4, 7, 11, 16, 22, 29, 37. He concretado en la hoja que no se repitan sumandos, y me ha devuelto estos resultados:

No es de extrañar que resulten siete soluciones, porque en estos procesos no tiene que existir solución única.

 
Sucesión de Fibonacci

Esta sucesión es claramente completa. Basta recordar que es creciente y en ella ak+1 = ak+ak-1, luego ak+1 < ak+ak = 2ak, que es condición suficiente para la completitud.

Existe una descomposición basada en esta propiedad, y es la de Zeckendorf, que consiste en ir restando a un número N el mayor número de Fibonacci posible. Es interesante, y acudo a ella con frecuencia. Puedes profundizar en el tema leyendo mi entrada https://hojaynumeros.blogspot.com/2020/09/representacion-de-zeckendorf.html y descubrir en qué consiste la multiplicación de Fibonacci.

Por ejemplo, esta es la representación de Zeckendorf del número 75:

75 = F(10)+F(7)+F(5)+F(3) = 55+13+5+2

No es el único desarrollo. Con nuestra herramienta Cartesius (https://www.hojamat.es/sindecimales/combinatoria/herramientas/herrcomb.htm#cartesius) se puede conseguir otro. Estas son las condiciones:

xrango=5 

xt=1..55    

xt=filtro(fibonacci)    

suma=75  

creciente 

no repite  

Y este el resultado:

Nos devuelve el ya conocido, 2+5+13+55, que es el desarrollo minimal, pero nos ofrece otro: 75=34+21+13+5+2


Números primos con la unidad

Si a la sucesión de números primos le adjunto a(1) = 1, resulta una sucesión completa. Es creciente, comienza en 1 y cumple que 2p(k) ≥ p(k+1). Esta afirmación se basa en el Postulado de Bertrand, que afirma, entre otras formulaciones, esta desigualdad. Por ejemplo, con la hoja partlista, podemos generar el número 35 con esta sucesión, y resulta:



Es evidente que esta descomposición da lugar a muchas soluciones distintas.

Se pueden encontrar más ejemplos de sucesiones completas, pero con estos se comprende bien el concepto. Otros que he encontrado son demasiado particulares y no son muy interesantes.

 


viernes, 6 de febrero de 2026

El catering perezoso

El título es la traducción literal de la sucesión “Lazy Caterer's Sequence” publicada en https://oeis.org/A000124 con el título Central polygonal numbers, que se refiere al máximo número de porciones que se puede obtener en una tarta si la sometemos a n cortes. Su referencia a los números de Hogben, ya tratados en este blog

(https://hojaynumeros.blogspot.com/2021/11/numeros-de-hogben.html)

 me ha llevado a estudiarla, sólo en los aspectos que trata normalmente este blog.

Fórmula de la sucesión

Si solo nos interesan los números máximos de piezas resultantes, deberemos suponer que cada corte posee intersección con todos los anteriores, evitando paralelismos, por lo que se cumplirá que c(n+1)=c(n)+n. Como c(1)=2, ya que el primer corte produce dos piezas, es fácil ver que la sucesión será: 2, 2+2,2+2+3, 2+2+3+4 ,… pero en OEIS se considera siempre c(0), que aquí sería 1 (ningún corte), por lo que resultaría al final 1, 2, 4, 7, 11, 16, …, que es la publicada.

El hecho de que la suma de los primeros números naturales sea un número triangular, n(n+1)/2, nos da directamente la fórmula de estos números:

En la imagen vemos la generación de c(4), porque de los tres cortes existentes, el cuarto produce 4 nuevos, y el resultado es 4*5/2+1=11

Si la fórmula de c(n) es n(n+1)/2+1, la de c(n-1) será, desarrollando (n2-n+2)/2, y podemos identificar el numerador con un número de Hogben aumentado en una unidad. Esto relaciona las dos sucesiones, pues si añadimos una unidad a la Hogben y dividimos entre 2 nos resulta la que estamos estudiando.

Si emparejamos índices, se comprueba esta relación:

Hogben:             1, 1, 3, 7, 13, 21, 31, 43,  57, 73, 91

Lazy Caterer's:       1, 2, 4,  7,  11, 16,  22,  29, 37, 46

(13+1)/2=7, (21+1)/2=11,  (31+1)/2=16, …

Los números de Hogben, según es fácil de demostrar, se generan con la recurrencia h(n+1)=h(n)+2n, ajustando bien el índice inicial. Es otra forma de razonar la relación entre las dos sucesiones.

Si repasamos mi estudio de estos números, podemos descubrir que los c(n) son la cuarta parte de la suma de dos de h(n)  diferenciados en dos órdenes:

2=(1+7)/4, 4=(13+3)/4, 7=(21+7)/4, 11=(31+13)/4, …

Los primeros términos de la sucesión c(n) son:

1, 2, 4, 7, 11, 16, 22, 29, 37, 46, 56, 67, 79, 92, 106, 121, 137, 154, 172, 191, 211, 232, 254, 277, 301, 326, 352, 379, …

https://oeis.org/A000124

Basta aplicar la formula a los primeros números naturales para conseguirla.

Algunas curiosidades

En la página citada se proponen varias propiedades y curiosidades, pero sin desarrollar. Estudiaremos algunas.

Todo proceso en el que el término enésimo produzca el siguiente al sumarle n puede interpretarse como número del tipo C(n).

Un ejemplo que se propone que el de contar los términos de la expresión (x+y)*(x2+y2)*(x3+y3)*...*(xn+yn).

For n >= 1 a(n) is the number of terms in the expansion of (x+y)*(x^2+y^2)*(x^3+y^3)*...*(x^n+y^n). - Yuval Dekel (dekelyuval(AT)hotmail.com), Jul 28 2003

La justificación es la siguiente: Los primeros términos la cumplen, porque c(0)=1, c(1)=2 y c(2)=4, como fácilmente se comprueba. Los siguientes deberán incrementar los términos en n elementos, porque, por ejemplo, la expresión segunda x3+x2y+xy2+y3 se convertiría en x3*(x3+x2y+xy2+y3)+y3*(x3+x2y+xy2+y3), aparentemente ocho términos, pero se pierde uno al sumar los dos términos del tipo x3y3, con lo que se suman sólo tres términos, quedando 7, que es c(3). Lo vemos con wxMaxima:

         ratsimp((x+y)*(x^2+y^2)*(x^3+y^3));

     y^6+x*y^5+x^2*y^4+2*x^3*y^3+x^4*y^2+x^5*y+x^6

Siete términos, c(3)=7

Se razonaría de igual forma para grado 4. Lo comprobamos:

         ratsimp((x+y)*(x^2+y^2)*(x^3+y^3)*(x^4+y^4));

y^10+x*y^9+x^2*y^8+2*x^3*y^7+2*x^4*y^6+2*x^5*y^5+2*x^6*y^4+2*x^7*y^3+x^8*y^2+x^9*y+x^10

Once términos, c(4)=11

Otra forma de ver las curiosidades es la relación con técnicas de elegir dos elementos en un conjunto. La propuesta de nuestro compatriota Arregui aprovecha ese detalle:

Number of interval subsets of {1, 2, 3, ..., n} (cf. A002662). - Jose Luis Arregui (arregui(AT)unizar.es), Jun 27 2006

Para fijar un intervalo en el conjunto {1, 2, 3, ..., n} bastará elegir un inicio y un final, pero existen n(n-1)/2 formas de efectuar la elección, y añadimos el intervalo vacío, obtendremos los términos C(n). Por ejemplo, {1} sólo posee el intervalo vacío (), {1, 2} los intervalos (), (1,2), (2,3), (1,3), que son c(2)=4,  {1, 2, 3} tendría estos: intervalos (), (1,2), (2,3), (1,3) (1,4), (2,4), (3,4), en total c(3)=7.

Cualquier otro proceso de este tipo, ajustando los índices, se puede representar con los números c(n)

Termino con dos propiedades triviales:

Numbers m such that 8m - 7 is a square. - Bruce J. Nicholson, Jul 24 2017

En efecto, si T(n) es triangular, 8T(n)+1 es un cuadrado, según una popular propiedad, luego 8C(n)-7=8T(n)+8-7=8T(n)+1, que es un cuadrado.

a(n) is the sum of the first three entries of row n of Pascal's triangle. - Daniel T. Martin, Apr 13 2022

En efecto, los tres primeros términos son 1, n y n(n-1)/2 y su suma 1+(n2-n+2n)/2=1+n(n+1)/2=c(n). Por ejemplo, para n=4 queda 1+4+6=11=c(4)

Recurrencia lineal

Las sucesiones dependientes de cuadrados suelen presentar esta recurrencia: a(n+3) = 3*a(n+2) - 3*a(n+1) + a(n). En nuestro caso los términos iniciales son 1, 2, 4. Con mi herramienta de recurrencias se puede comprobar.

(https://www.hojamat.es/sindecimales/aritmetica/herramientas/herrarit.htm#recurre2)

Rellenamos las condiciones iniciales:

Pedimos ver la sucesión:


Como era de esperar, obtenemos C(n)

Como los números de Hogben también dependen de un cuadrado, se obtendrán con una recurrencia idéntica, pero iniciando en 1, 1, 3:

 


Pedimos ver la sucesión y obtenemos H(n):



En nuestra entrada de blog sobre estos números se explica el fundamento de que esta recurrencia sea válida para expresiones de segundo grado.