lunes, 19 de noviembre de 2018

Suma de cuadrados de cifras (1) - Un cuadrado más los de sus cifras

Esta entrada inicia una serie que iremos publicando a lo largo del curso 2018-19 sobre las suma de los  cuadrados de las cifras de un número natural. El tema de las cifras, al depender de la base de numeración, no es el preferido en este blog, pero como sus resultados suelen ser atractivos y muy apreciados por los seguidores, lo tocamos con cierta frecuencia.

La serie desarrollará tres tipos de propiedades o curiosidades

  • Igualdades entre números que implican el cuadrado de las cifras.
  • Propiedades y curiosidades clásicas, ya estudiadas, como los números felices.
  • Iteraciones con recurrencias en las que interviene la suma citada.


Abordamos la primera cuestión:

En el mes de diciembre de 2017, a propósito de la fecha 9/12/17, publiqué en Twitter (Antonio Roldán, @Connumeros) la siguiente curiosidad: 91217 equivale al cuadrado de un número sumado con los cuadrados de sus cifras:

91217=302^2+3^2+0^2+2^2

Como siempre en estas ocasiones, esto me motivó a estudiar mejor la suma de los cuadrados de las cifras de un número, pero, al investigar lo ya publicado, me di cuenta de que esta suma bien merecía lo que en este blog llamo “unas vueltas”, pues son varias las cuestiones interesantes que surgen de la misma. Nos llevará varias  entradas, constituyendo una serie, porque he visto que dicha suma da para muchas cuestiones distintas. Es probable que al final del curso 2018-19 se recojan en una publicación.

Comenzaremos con la propiedad que publiqué en Twitter: ¿qué números son equivalentes al cuadrado de otro, sumado con los cuadrados de sus cifras? Para ello necesitaré una función que calcule esa suma. Ya tengo una en Basic de hoja de cálculo que está diseñada no sólo para los cuadrados, sino para cualquier potencia. La puedes usar en Excel o en LibreOffice Calc, por ejemplo. Es la siguiente:

Public Function sumacifras(n, k)
Dim h, i, s, m

h = n ‘Variable auxiliar
s = 0 ‘Recibirá la suma
While h > 9
i = Int(h / 10)
m = h - i * 10
h = i ‘Estas tres líneas extraen una cifra del número
s = s + m ^ k ‘La potencia se incorpora a la suma
Wend
s = s + h ^ k
sumacifras = s
End Function

Es evidente que en nuestro caso el valor de k siempre será 2, ya que usaremos cuadrados. Puedes eliminar la variable k y sustituirla por 2. Aquí no lo haremos por no perder generalidad en esta función.

En el caso de k=2, la función tiene en el lenguaje PARI una traducción muy simple. Basta pedir

norml2(digits(n))

Listado de números con la propiedad pedida

Una vez tenemos la función que suma los cuadrados de las cifras de n bastará sumar el número con esa suma, es decir

 n+sumacifras(n;2)

Con ello podemos construir un listado:



Por ejemplo, 162=9^2+9^2, 179=13^2+1^2+3^2, 293=16^2+1^2+6^2,…

Salen desordenados, por lo que hay que acudir a http://oeis.org/A209303, página de OEIS en la que se publican ordenados:  2, 8, 18, 32, 50, 72, 98, 101, 123, 128, 149, 162, 179, 213, 251, 293, 339, 389, 404, 443, 446,…Podemos conseguir que se nos presenten ordenados (En Excel basta con el comando de ordenar) con el lenguaje PARI:

list(a)=my(v=List(), t); for(p=1, a, t=p^2+norml2(digits(p));listput(v, t)); vecsort(Vec(v)); 
print(list(20))


Como era de esperar, este listado sólo incluye números no muy grandes. En el caso de 91217 no hubiéramos descubierto la propiedad consultándolo. Necesitamos una función que nos indique de forma directa si un número posee esta propiedad o no, si es la suma de otro número más los cuadrados de sus cifras.

Función MASSUMACIF

Con la base de la función sumacifras podemos recorrer, para un número N, desde 1 hasta la raíz k-ésima de N, todos los números posibles, hasta ver si uno cumple la propiedad:

Function massumacif(n, k)
Dim i, r, ms

ms = 0
r = Int(n ^ (1 / k))
i = 1
While i <= r And ms = 0
If i ^ k + sumacifras(i, k) = n Then ms = i
i = i + 1
Wend
massumacif = ms
End Function

Esta función devolverá un cero si no posee la propiedad, y la base del cuadrado si la cumple.  Con ella volvemos al inicio de la cuestión. Si la aplicamos al 91217, con el segundo parámetro igual a 2 (cuadrados) nos devuelve 302.

massumacif(91217;2)=302

Es muy simple la versión de esta función en el lenguaje PARI. El siguiente código produce el mismo listado, idéntico al que se consiguió ordenando la sucesión primitiva.

for(i=1,1000,ms=0;r=sqrt(i);j=1;while(j<=r&&ms==0,if(j^2+norml2(digits(j))==i,ms=j;print1(i,", "));j+=1))




Tipos de números

No hemos encontrado cuadrados ni números triangulares en esta sucesión, al menos menores que 70000. Sí figuran primos. Los primeros son:
2, 101, 149, 179, 251, 293, 389, 443, 971, 1181, 1259, 1427, 2843, 2957, 3323, 5237, 5387,…

Sólo hemos identificado tres potencias no cuadrados, 2, 32 y 128, que corresponden a potencias de 2 de una sola cifra, 2, 4 y 8.

Como curiosidad última, sí existen capicúas en la sucesión. Los primeros son 101, 404, 909, 10001, 29292, 40004,…

Los que poseen cifra 0 se justifican fácilmente, como 404, que coincide  con 20^2+2^2+0^2. Más difícil es 29292, que sin ordenador hubiera sido difícil obtener que

29292=171^2+1^2+7^2+1^2

Variantes de esta operación

En la suma del cuadrado de un número con la suma de cuadrados de sus cifras podíamos eliminar el que el número se eleve al cuadrado. Simplemente le sumamos el cuadrado de sus cifras. En A258881 tienes publicadas de forma desordenada esas sumas:

0, 2, 6, 12, 20, 30, 42, 56, 72, 90, 11, 13, 17, 23, 31, 41, 53, 67, 83, 101, 24, 26, 30, 36, 44, 54, 66, 80, 96, 114, 39, 41, 45, 51, 59, 69, 81, 95, 111, 129, 56, 58, 62, 68, 76, 86, 98, 112, 128, 146, 75, 77, 81, 87, 95, 105, 117, 131, 147, 165, 96,…

Te invitamos a que uses la función MASSUMACIF, debidamente corregida (basta sustituir  i^2 por i y eliminar la variable r, siendo sustituida por i) para obtener un listado ordenado en Excel:

2
6
11
12
13
17
20
23
24
26
30
31
36

El listado de MASSUMACIF0 puede ser

Function massumacif0(n, k)
Dim i, r, ms

ms = 0
i = 1
While i <= n ‘Se suprime la raíz de n
If i + sumacifras(i, k) = n Then ms = ms + 1 ‘Se acumula la variable ms
i = i + 1
Wend
massumacif0 = ms ‘El resultado es el número de repeticiones
End Function

En PARI podemos efectuar una corrección similar y resultará

for(i=1,100,ms=0;j=1;while(j<=i&&ms==0,if(j+norml2(digits(j))==i,ms=j;print1(i,", "));j+=1))

Su resultado coincide con el de Excel:


Números con soluciones múltiples

En http://oeis.org/A225049 están publicados los números de la anterior sucesión que presentan varias soluciones:

30, 41, 56, 81, 95, 96, 98, 101, 112, 114, 121, 125, 131, 142, 146, 152, 157, 168, 173, 177, 182, 186, 191, 196, 197, 199, 206, 209, 213, 215, 216, 217, 227, 230, 232, 234, 240, 243, 245, 247, 248, 257, 260, 262, 266, 272, 276, 284, 285, 287, 292, 299, 300

Por ejemplo 131 = 57+5^2+7^2 = 73+7^2+3^2 = 105+1^2+5^2 = 122 + 1^2+4^2+4^2.

Con el uso de massumacif0(i), si exigimos que su valor sea mayor que 1, obtenemos el mismo listado:

30
41
56
81
95
96
98
101

No hay comentarios: