jueves, 27 de junio de 2019

Iteración basada en la suma de cuadrados de cifras (4) -Otras iteraciones

Suma y resta de los cuadrados de las cifras

Estudiamos en esta entrada una iteración que es una composición de dos ya estudiadas (ver entradas inmediatamente anteriores). Consiste en sumar a cada término la suma de los cuadrados de sus cifras y después restar al resultado ese cuadrado aplicado a sus propias cifras.

Por ejemplo, si a(n)=234, haremos b=234+22+32+42=263, y restaremos a b el cuadrado de sus cifras para obtener el siguiente término, a(n+1)=263-22-62-32=214.


En esta operación habrá números, como el anterior, que disminuirán su valor, otros lo aumentarán y algunos lo conservarán, como 3114, que al aplicarle la iteración resulta: b=3114+9+1+1+16=3141, y este se convierte en 3141-9-1-16-1=3114. En estos casos la suma de cuadrados es la misma en a(n) y en a(n+1).

Podíamos llamar “exceso cuadrático” a la diferencia entre la suma de cuadrados de las cifras de un número y el resultado de aplicar la misma operación a la suma del número con los cuadrados de sus cifras. Suponemos que calculamos la diferencia el segundo resultado menos el primero.

Así, 234, tendría un exceso cuadrático de 22+62+32-22-32-42=20. Por eso, en la iteración disminuye de 234 a 234-20=214. Los números con exceso cuadrático positivo se hacen menores en la iteración.

3114 tendría exceso cuadrático 0, por lo que es invariante.

129 tendría exceso negativo, ya que 129+1+4+81=215 y 22+12+52=30, es menor que 12+22+92=86. Por eso, 129 aumenta en la iteración, pues se convertiría en 129+86-30=185.

Existen muchos más números que disminuyen, por lo que esta iteración converge o entra en un ciclo, al igual que la anteriores.

Las iteraciones van terminando en los invariantes (ver listado más abajo) o en ciclos de dos, como 752 con 757, de tres, como 9125, 9106, 9119. Necesitamos una función que nos diga en qué ciclo se termina.

Detector de ciclos (solo hasta 100)

Public Function esciclosumacuad(n)
Dim p, q, r, p1
Dim es As Boolean

p = n: r = 0: es = False
While r < 100 And Not es
p1 = p + sumacifras(p, 2)
q = p1 - sumacifras(p1, 2)
If q = n Then es = True
p = q
r = r + 1
Wend
If es Then esciclosumacuad = r Else esciclosumacuad = 0
End Function

Con ella descubrimos los ciclos de longitud 1, invariantes

Los primeros invariantes son:

0, 9, 205, 212, 217, 366, 457, 663, 1314, 1315, 1348, 1672, 1742, 1792, 1797, 2005, 2012, 2017, 2129, 2201, 2208, 2213, 2216, 2305, 2404, 2405, 2465, 2564, 2565, 2671, 2741, 2748, 2789, 2829, 3114, 3115, 3205, 3303, 3306, 3394, 3436, 3475, 3696, 3819, 4204, 4205, 4245, 4347, 4475, 4542, 4629, 4647, 4688,...

Los puedes reproducir también con PARI:

for(i = 0 , 5000 , a = i + norml2(digits(i)) ; b = a - norml2(digits(a)) ; if(i == b , print1(i , ", ")))

Los primeros ciclos de 2 los tienes en la tabla. Cada término de la primera columna forma ciclo con la cuarta:


Existen ciclos de 3, 4 o 5 elementos, e incluso 12, 18 o 19. Es mucha variedad, lo que le quita interés. Para números comprendidos entre 0 y 50000 la longitud máxima que he encontrado es 24.

Cocientes

Podemos dividir cada número entre la suma de sus cifras al cuadrado, pero al llegar al elemento 0, obtendríamos divisiones imposibles. Por eso añadiremos una unidad, con lo que resulta otra iteración que desemboca en un ciclo.

Usaremos, pues la fórmula (en hoja de cálculo):

A(n+1)=ENTERO(A(n)/SUMACIFRAS(A(n);2))

Esta iteración presenta un desarrollo muy simple, pues en pocos pasos desembocamos en el ciclo {1, 2}, ya que 1+ENTERO(1/1^2)=2 y 1+ENTERO(2/2^2)=1

Existe la iteración con el cociente invertido:

A(n+1)=1+ENTERO(SUMACIFRAS(A(n);2)/A(n))

Esta es muy curiosa, pues recorre el ciclo formado por los diez primeros números naturales.

En efecto, si se entra en el 1, 2,…10 en cualquier paso de la iteración, ya no se abandona el ciclo. Lo vemos:


1+ENTERO(1^2/1)=2, 1+ENTERO(2^2/2)=3 y 1+ENTERO(a^2/a)=a+1, siendo a<10, y, por último, 1+ENTERO((1^2+0^2)/10)=1

Aquí tienes un volcado de pantalla en el que se comprueba. Contiene los primeros pasos en la iteración en varios números consecutivos:


Los números de cuatro o más cifras son mayores que la suma de cuadrados de sus cifras, luego en ellos el ciclo aparecerá en el primer paso:


Con esta entrada finaliza nuestra serie sobre los cuadrados de las cifras. Proximamente crearemos una publicación sobre el tema.

También con ella damos por terminado el curso 2018-19. En septiembre volvemos. Feliz verano.



miércoles, 19 de junio de 2019

Iteración basada en la suma de cuadrados de cifras (3) - Diferencias



Diferencias con la suma de cifras al cuadrado

Las iteraciones estudiadas en nuestras dos anteriores entradas las podemos completar con otras similares ideadas por mí, que no parecen haber sido estudiadas hasta ahora. 

La iteración propuesta consiste que, en lugar de transformar un número en la suma con los cuadrados de sus cifras, lo hagamos con la diferencia, en valor absoluto, entre el número y esa suma de cifras al cuadrado. El uso del valor absoluto se justifica porque algunos números son mayores que la suma de esos cuadrados, como 21>2^2+1^2 y otros menores, como 2>2^2. De esa forma nos aseguramos que el resultado sea positivo y también que sea siempre menor (salvo el caso trivial de 0) que la suma de cifras al cuadrado estudiada en la entrada anterior.

Todo el contenido de la demostración enlazada en anteriores entradas (http://fermatslibrary.com/s/a-set-of-eight-numbers#email-newsletter) se puede adaptar a esta nueva iteración, en el sentido, que ya veremos, de terminar en ciclos similares a los que se producen iterando sólo con los cuadrados.

Necesitamos la función SUMACIFRAS(n;2), ya estudiada en esas entradas, con el parámetro 2 para que se sumen los cuadrados, sólo que ahora usaremos ABS(SUMACIFRAS(N;2)-N) en la iteraciones. Por ejemplo:

34 se convierte en abs(3^2+4^2-34)=9

9, a su vez en 81-9=72, y así podemos proseguir:



Observamos que entramos en el ciclo 18, 47, 18, 47,…En otros ejemplos se llega al ciclo 21, 16, 21, 16,…

Otras iteraciones terminan en 0, como la siguiente:


Por último, otras terminan en 2 como invariante (2=abs(2-2^2))


Hemos probado muchos números y en ellos sólo existen cuatro finales posibles en los ciclos {0}, {2}, {16,21} y {18, 47}. Lo dejamos como conjetura, pero es seguro que existe una demostración similar a la de la iteración de las anteriores entradas.

Con la función   ESCICLODIFCUAD también hemos explorado los posibles ciclos. Su objetivo es descubrir si un número N es comienzo de ciclo. Su listado es:

Public Function esciclodifcuad(n)
Dim p, q, r
Dim es As Boolean

p = n: r = 0: es = False
While r < 100 And Not es
q = Abs(p - sumacifras(p, 2)) ‘Efectúa la iteración
If q = n Then es = True ‘Si se repite el valor de n, es inicio de ciclo
p = q
r = r + 1 ‘Cuenta las iteraciones
Wend
If es Then esciclodifcuad = r Else esciclodifcuad = 0
End Function

Con ella hemos comprobado, con una cierta seguridad (no total) que los únicos números inicio de ciclo son los presentados:


Como curiosidad señalaremos que en números mayores que 10000 las iteraciones presentan mucho más recorrido, una órbita más larga hasta llegar al ciclo.

Variante

Podemos restar el doble de la suma de cuadrados de las cifras, que convergerá más rápidamente que la anterior. Encontraríamos entonces que se llega al ciclo {78, 148, 14, 20, 12, 2, 6, 66}, o al ciclo {7, 91, 73, 43} o a los invariantes 0 y 1.

Por ejemplo, en el primer ciclo se daría:

Abs(78-2*(49+64))=2*113-78=226-78=148
Abs(148-2*(1+16+64))=162-148=14

Y así seguimos hasta

Abs(6-2*36)=72-6=66
Abs(66-2*(36+36))=144-66=78

Y esto completa el ciclo.

Usando un “buscador de ciclos” similar al de la iteración anterior, lo comprobamos:





martes, 11 de junio de 2019

Iteración basada en la suma de cuadrados de cifras (2) Números felices



En la iteración de la entrada anterior de esta serie (es importante su repaso), los números que desembocan en la unidad reciben el nombre de “números felices”. Por ejemplo, el 129, que en la iteración de sumar los cuadrados de sus cifras recorre la siguiente órbita:


Como era de esperar, el 1 es un punto fijo, y 129 se considera “número feliz”.

Estos números son populares en las distintas divulgaciones de temas de números.

La lista de los primeros está contenida en http://oeis.org/A007770  

1, 7, 10, 13, 19, 23, 28, 31, 32, 44, 49, 68, 70, 79, 82, 86, 91, 94, 97, 100, 103, 109, 129, 130, 133, 139, 167, 176, 188, 190, 192, 193, 203, 208, 219, 226, 230, 236, 239, 262, 263, 280,…

Esta sucesión se corresponde con la primera de las nueves clases de equivalencia que estudiamos en la entrada anterior:


En la página OEIS citada puedes leer consideraciones muy sencillas sobre estos números. Hemos adaptado tres:


  •  L Las potencias de 10 son números felices, pues desembocan en 1 con una sola iteración. Esta propiedad garantiza la infinitud de la sucesión de números felices. De igual forma, los números del tipo 2*10^k producen un 4 en la primera iteración, con lo que entran en ciclo. Por ello los números no felices también son infinitos.
  •       Si n es un número feliz, también lo son los obtenidos a partir de él insertando ceros entre sus cifras, o alterando el orden de estas.
  •      Si n es feliz, el número formado por n unos, 111..1111 también lo es, porque en la primera iteración produce n.

Función para detectar números felices

La función ciclocuad que se usó en la entrada anterior para clasificar los números en esta iteración se puede adaptar fácilmente al caso en el que el final esperado sea un 1. Bastará iterar sobre el número mientras sea mayor que 6. Si desemboca en 2, 3, 4, 5 o 6, no es feliz (ver las clases de equivalencia de la entrada anterior), pero si lo hace en 1, ya sabremos que lo es:

Public Function esfeliz(n) As Boolean
Dim m
m = n 'Recogemos la variable n para su manipulación
If m = 1 Then esfeliz = True: Exit Function ‘Si es 1, es feliz
While m > 6  ‘Todos los felices salvo el 1 son mayores que 6
m = sumacifras(m, 2)  ‘Iteramos sobre m hasta que sea menor que 6 (será 4 o 1)
If m = 1 Then esfeliz = True Else esfeliz = False 'Si el final es un 1, es que n es feliz
Wend
End Function

Con esta función podemos determinar si un número es feliz o no. Aquí tienes los resultados para los primeros números de tres cifras:


Coincide con el listado, en el que figuran 100, 103 y 109

Podemos construir un pequeño esquema que nos indique si un número es feliz o no:

En la imagen hemos aplicado la función a 4599, con resultado afirmativo:


En efecto, la iteración desemboca en un 1:


Podemos modificar la función esfeliz para que nos devuelva un cero si el número no es feliz, o el número de iteraciones si lo es. Quedaría así:

Public Function orbitafeliz(n)
Dim m, k
m = n  ‘La variable m recoge el valor de n
k = 0 ‘Contador de iteraciones
If m = 1 Then orbitafeliz = 0: Exit Function ‘Si m=1, no necesita iteración
While m > 6
m = sumacifras(m, 2)
k = k + 1
Wend
If m = 1 Then orbitafeliz = k Else orbitafeliz = 0
End Function

Aplicada esta función a los números del 100 al 110 nos confirma que los únicos felices son 100, 103 y 109, con longitudes de órbita respectivas de 1, 2 y 4:


La longitud de la órbita no suele ser muy grande. El primer número con 6 iteraciones es el 356 y con 7 iteraciones el 78999.

Felices consecutivos

Con la función esfeliz se puede organizar con hoja de cálculo una búsqueda de felices consecutivos. Aquí tienes los primeros pares:


Los números menores de cada par están publicados en http://oeis.org/A035502

Feliz doble de otro

Podemos seguir jugando con la idea de número feliz. En esta tabla figuran números felices en los que uno es el doble del otro:


Dentro de esta sucesión existen números en los que n, 2n y 4n son felices:


Entre ellos algunos incluyen 8n como feliz:


Puedes buscar casos parecidos, que con la función ESFELIZ propuesta no son difíciles de encontrar.

Feliz cuadrado de otro

En estos pares el segundo feliz es el cuadrado del otro:


Estos están publicados en http://oeis.org/A280966

Primos felices

Si unimos las funciones esprimo y esfeliz obtendremos la sucesión de primos felices:

7, 13, 19, 23, 31, 79, 97, 103, 109, 139, 167, 193, 239, 263, 293, 313, 331, 367, 379, 383, 397, 409, 487, 563, 617, 653, 673, 683, 709, 739, 761, 863, 881, 907, 937, 1009,…

También están publicados en OEIS (http://oeis.org/A035497)

No se sabe si existen infinitos primos felices.


lunes, 3 de junio de 2019

Iteración basada en la suma de cuadrados de cifras (1)


Por motivos de planificación de mis publicaciones, en este mes de junio publicaré las entradas correspondientes al tema de iteraciones basadas en el cuadrado de las cifras de un número, incluyendo en ellas el tema de los números felices. El resto de temas habituales quedan para después del verano.

En esta entrada de la serie de “vueltas” sobre los cuadrados de las cifras de un número, reproduciremos una curiosidad publicada por Fermat’s Library en Twitter el día 24 de abril de 2018:


Consiste la curiosidad en que si a un número cualquiera le sumas los cuadrados de sus cifras y reiteras la operación, terminarás en el valor 1, que sería invariante (y terminaría el proceso), o bien entraríamos en el ciclo {4, 16, 37, 58, 89, 145, 42, 20}

No se trata de una conjetura. La demostración se encuentra en


Puedes visitar estas direcciones para encontrar más referencias a estas iteraciones:


Como la cuestión está resuelta, salvo mejorar la demostración, aquí sólo nos queda construir una herramienta de hoja de cálculo para recorrer el proceso explicado. Es una tarea sencilla, por lo que la completaremos con el cálculo del número de iteraciones necesarias para llegar al 1 o al ciclo y también por qué número se entra en ese ciclo. 

En la imagen vemos que el número 2398 entra en el ciclo a través del número 37 y lo consigue en la sexta iteración.


En este otro ejemplo, el 79 llega al 1 en la tercera iteración:


Podríamos construir una función que nos devolviera el número de iteraciones y el valor de entrada al ciclo (o el 1). El problema radica en que sería una función con dos resultados, el número de iteraciones y el elemento por el que entra al ciclo. La definición de funciones tipo array en hoja de cálculo no es trivial, por lo que concatenaremos ambos números mediante una cadena de caracteres.

Como en otras muchas entradas que tratan de cifras, es conveniente eliminar el espacio en blanco que Excel y Calc añaden a los números positivos. Para ello usaremos la función AJUSTA, ya usada en este blog varias veces. Convierte el número en una cadena de caracteres sin espacios en blanco.

Function ajusta$(a)
Dim d$

d$ = Str$(a)
While Left$(d$, 1) = " "
d$ = Right$(d$, Len(d$) - 1)
Wend
ajusta$ = d$
End Function

Con ella podemos construir la función deseada. Hay que estudiar su listado con atención:

Public Function ciclocuad$(n)
Dim a$, c$, s$
Dim k, m, i, j
Dim final As Boolean

m = n ‘Se recoge la variable n en otra m para su manipulación
a$ = " 1 4 16 37 58 89 145 42 20 " ‘Conjunto formado por el 1 y los ocho números del ciclo
c$ = “ “+ajusta(m)+” “ ‘Las tres líneas siguientes detectan si m pertenece al ciclo
i = InStr(a$, c$)
If i > 0 Then ciclocuad = "$0#0$": Exit Function ‘Si pertenece, devolvemos dos ceros
final = False
j = 0
While Not final
m = sumacifras(m, 2) ‘Se sustituye el número m por la suma de cuadrados de sus cifras
j = j + 1
c$ = " " + ajusta(m) + " " ‘Se rodea el número de espacios en blanco para buscar en c$
i = InStr(a$, c$) ‘Si pertenece al conjunto, la variable i será mayor que 0
If i > 0 Then
final = True ‘Fin de la iteración
s$ = "$" + ajusta(j) + "#" + ajusta(m) + "$" ‘Los valores se rodean con # y $
End If
Wend
ciclocuad = s$
End Function

Para cada número aparecerá un resultado del tipo $6#58$, en el que 6 sería el número de iteraciones y 58 la entrada al ciclo. Se ha construido así para facilitar búsquedas posteriores.

Por ejemplo, para buscar los primeros números que entran en el ciclo a través del número 58 bastará buscar en el resultado de ciclocuad$ el trozo de cadena #58$, y para encontrar los que necesitan tres iteraciones buscaremos $3#. Esto explica que se hayan insertado esos caracteres.

Aquí tienes los primeros números que entran en el ciclo a través del 58:



Y estos los que necesitan tres iteraciones:


Según lo estudiado, los números se clasificarán en nueve clases de equivalencia según la entrada que tengan en el ciclo. Aquí tienes los primeros:


Puedes comprobar que todos los números pequeños pertenecen a una de las nueve clases de equivalencia. Dentro de la misma clase figurarán los números formados con las mismas cifras. Así, 145, 154, 415, 514, comparten la clase 42.
Se observa que con entrada en 37 y 89 hay muchos más, ya que el nuestro listado termina en 75 y 36 respectivamente. La más escasa se ve que es la correspondiente a 20.

Podemos, con un poco de paciencia, contar, por ejemplo, los que hay de cada clase del 1 al 2000:


Se percibe claramente el desequilibrio en las frecuencias. En la siguiente entrada estudiaremos un caso particular de esta iteración, como son los números felices.


jueves, 23 de mayo de 2019

Sumas de cuadrados de cifras(7) - Otros casos particulares



Sigue la serie dedicada en este curso a la suma de los cuadrados de las cifras de un número entero positivo. Ya se han publicado seis, que puedes identificar porque su título comienza con “Suma de cuadrados de cifras”.

En esta entrada estudiaremos las relaciones de divisibilidad existentes entre un número, la suma de los cuadrados de sus cifras y la suma de las mismas y otros casos, como los números colombianos. Comenzamos por el caso más directo.

Números divisibles entre la suma de los cuadrados de sus cifras

Con nuestra función sumacifras, ya presentada en anteriores entradas, para encontrar estos números basta exigir que RESIDUO(N;SUMACIFRAS(N;2))=0, ya que si el resto de dividir ambos es nulo, se da la divisibilidad. Hemos procedido de esta forma, con el resultado:


Esta sucesión está publicada en http://oeis.org/A034087

A034087                            Numbers divisible by the sum of the squares of their digits.           
1, 10, 20, 50, 100, 110, 111, 120, 130, 133, 200, 210, 240, 267, 298, 310, 315, 360, 372, 376, 400, 420, 480, 500, 532, 550, 630, 803, 917, 973, 1000, 1010, 1011, 1020, 1030, 1071, 1100, 1101, 1110, 1134, 1148, 1200, 1211, 1222, 1290, 1300, 1302, 1316

Como es lógico, aparecen muchos números terminados en cero, porque esto facilita la divisibilidad.

Puedes reproducirlos usando PARI:

for(p=1,2000, a=norml2(digits(p)); if(p%a==0, print1(p,", ")))

Aquí el signo % equivale al resto o RESIDUO, y ves que le exigimos que valga cero.
Como en casos anteriores, si N pertenece a la sucesión, N*10k, también, porque la suma de cuadrados será la misma y N queda multiplicado, luego seguirá siendo divisible.

Como curiosidad, estos son los primeros cuyo cociente cumple una condición:

Cociente cuadrado

Aquí, a la condición de que RESIDUO(N;SUMACIFRAS(N;2))=0 añadimos que el cociente sea cuadrado.

Obtenemos:

1, 100, 315, 376, 400, 2511, 2575, 2688, 3312, 4114, 4416, 8256, 10000, 21250, 22869, 24624, 24832, 31500, 32634, 35584, 37600, 40000, 43639, 47232, 56250, 60164, 62208, 68229, 71344, 74360, 80625, 97336,…

Por ejemplo, 4114/(42+12+12+42) = 112

Lo puedes reproducir con PARI:

for(p=1,100000, a=norml2(digits(p)); if(p%a==0&&issquare(p\a), print1(p,", ")))

Otro ejemplo: 97336/(92+72+32+32+62) = 529 = 232

Cociente primo

De la misma forma, exigiendo que el cociente sea primo resultan:

20, 50, 111, 130, 133, 267, 298, 310, 550, 803, 917, 973, 1011, 1030, 1101, 1211, 1431, 1547, 2444, 2669, 2958, 3053, 3906, 5050, 6179, 7303, 8083, 8938, 10094, 10142, 10341, 11043, 11176, 11426, 12142, 12215, 12382, 12431, 12814, 13222, 13317, 13731, 13797, 14102,…

Por ejemplo, 298/(22+92+82)=2, que es número primo.

Y su código

for(p=1,20000, a=norml2(digits(p)); if(p%a==0&&isprime(p\a), write1("final.txt",p,", ")))


Comenzamos con el cociente 1. Sólo el número 1 coincide con la suma de los cuadrados de sus cifras.

Con el cociente  2 sólo aparecen 50 y 298, ya visto en el anterior apartado, al menos entre números menores que 2*106.

Con el cociente 3 sólo nos aparece el 267, en el que 267/(22+62+72)=3. Con el 4,  376, y con el 5, 20. No seguimos. Son fáciles de encontrar, pero no dan más de sí.


Números colombianos cuadráticos

Se llaman números colombianos a aquellos que no pueden ser expresados como la suma de un número y la suma de sus cifras. En el contexto de esta serie de entradas, podemos considerar los de tipo cuadrático, que no pueden ser expresados como la suma de otro número más la suma de los cuadrados de sus cifras. Uno de ellos, por ejemplo, es el 21, porque desarrollando para números menores ninguno da un resultado de 21, como puedes ver en la tabla:



Como la distribución de cifras es algo imprevisible, nos vemos obligados a usar todos los casos entre 1 y N-1 para saber si un número es colombiano de tipo cuadrático. Esto retrasa el proceso, pero podemos usar esta función:

Public Function escolombiano(n)
Dim m
Dim es As Boolean

m = 1
es = True
While m < n And es
If m + sumacifras(m, 2) = n Then es = False
m = m + 1
Wend
escolombiano = es
End Function

Así resultan los primeros:

1, 3, 4, 5, 7, 8, 9, 10, 14, 15, 16, 18, 19, 21, 22, 25, 27, 28, 29, 32, 33, 34, 35, 37, 38, 40, 43, 46, 47, 48, 49, 50, 52, 55, 57, 60, 61, 63, 64, 65, 70, 71, 73, 74, 78, 79, 82, 84, 85, 88, 89, 91, 92, 93, 94, 97, 99, 100, 104, 106, 109, 110, 115, 120, 122,…

Observamos que son muy abundantes, que la excepción es que la igualdad se cumpla, como en el 2, en el que 2=1+12, o el 12, que cumple 12=3+32. En los elementos de la lista esta equivalencia no es posible para ningún número menor que ellos.

Los tienes publicados en https://oeis.org/A225048


Números que son primos con la suma de los cuadrados de sus dígitos (en base 10)

Muchos números naturales son primos con la suma de los cuadrados de sus dígitos. Esto tiene su lógica, pues ambos números pertenecen a ámbitos distintos. La suma de cuadrados de cifras depende además de la base de numeración, en este caso 10.

Si usamos nuestra función sumacifras es fácil programar una búsqueda de los números que nos interesan. Resultan ser estos:



En formato de lista:

1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 23, 25, 27, 29, 31, 32, 34, 35, 37, 38, 41, 43, 45, 47, 49, 51, 52, 53, 54, 56, 57, 58, 59, 61, 65, 67, 71, 72, 73, 74, 75, 76, 78, 79, 81, 83, 85, 87, 89, 91, 92, 94, 95, 97, 98, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 113, 115, 119, 121, 122,…

Podemos generarla también con el lenguaje PARI:

for(p=1,300, a=norml2(digits(p)); if(gcd(p,a)==1, print1(p,", ")))

Son tantos los ejemplos, que merece la pena obtener sus complementarios, aquellos que no son coprimos con la suma de cuadrados de sus cifras. Los primeros son estos:

2, 3, 4, 5, 6, 7, 8, 9, 20, 22, 24, 26, 28, 30, 33, 36, 39, 40, 42, 44, 46, 48, 50, 55, 60, 62, 63, 64, 66, 68, 69, 70, 77, 80, 82, 84, 86, 88, 90, 93, 96, 99, 110, 111, 112, 114, 116, 117, 118, 120, 125, 129, 130, 132, 133, 134, 135, 136, 138, 141, 143, 144, 147, 150, 152, 154, 156, 158, 170, 171, …

Se obtienen como los anteriores, cambiando == por >> en PARI:

for(p=1,300, a=norml2(digits(p)); if(gcd(p,a)>>1, print1(p,", ")))

Con estos ejemplos finalizamos las curiosidades más destacables  de la suma de los cuadrados de las cifras de un número. En las siguientes entradas presentaremos algunas iteraciones interesantes.

lunes, 13 de mayo de 2019

Números primos con la misma suma o diferencia de cuadrados (2)


En la anterior entrada se estudiaron aquellos números primos que dan lugar a sumas de cuadrados equivalentes. En la presente se verá la misma cuestión con diferencias.


Diferencias de cuadrados


En el caso de buscar números que sean equivalentes a dos diferencias de cuadrados de números primos es más sencillo usar la diferencia k entre dos de esos primos. Incluimos un desarrollo algebraico que le da ese protagonismo a esa diferencia k.

Partimos de una suma por diferencia como equivalente a la diferencia de cuadrados. Si m=(a+b)(a-b). sustituyendo a por x+k y b por x, llamando k a la diferencia a-b, queda:

m=(x+k+x)(x+k-x)=(2x+k)k.

El valor mínimo de k es 2, ya que sería el caso de primos gemelos, luego k>=2 siempre será par, puesto que hemos excluido el número primo 2.

Por otra parte, 2x+k es un divisor propio de m, y también par, luego será menor o igual que m/2, y, a su vez, m será múltiplo de 4. Sólo los múltiplos de 4 pueden presentar la propiedad requerida.

2x+k=m/k<=m/2, luego x ha de ser menor o igual que m/4 y x+k<=m/4+k

Así queda el valor de x en función de k: x=(m/k-k)/2

Luego podemos construir el bucle de búsqueda con k entre los divisores pares de m, a fin de que sea entero m/(2*k).

Para cada valor de k, par, vemos si es divisor de m y entonces buscamos entre los impares, de x=3 hasta x=m/4 los que sean primos y también lo sea x+k

Estas consideraciones nos llevan a la siguiente función, en la que dados un número natural n y un número k de diferencias de cuadrados de primos, nos indica si ese número equivale a esas diferencias o no:

public function difeprimcuad$(n,k)
dim b, c,i,m,d
dim ca$

if n/4<>n\4 then difeprimcuad="NO":Exit function ‘Ha de ser múltiplo de 4

ca="" ‘Recogerá las soluciones en modo texto
m=0 ‘Contador de soluciones
b=int(sqr(n))+1 ‘Valor mínimo para el primer primo
d=int(n/4+2) ‘Valor máximo según los párrafos anteriores
for i=b to d
if esprimo(i) then ‘El minuendo de la diferencia ha de ser primo
c=int(sqr(i^2-n+1e-5)) ‘Posible sustraendo
if esprimo(c) and i^2=n+c^2 then m=m+1: ca$=ca$+" "+ajusta(i)+" "+ajusta(c)+" & "
‘Hay una solución más. Se recoge en ca$ y se incrementa el contador m
end if
next i
if m=k then difeprimcuad=ca else difeprimcuad="NO" ‘Si hay k soluciones, se recogen.
end function

Con esta función y un bucle de búsqueda obtenemos las primeras soluciones, acompañadas de las diferencias de cuadrados de primos que admiten:

72          11 7 &  19 17 &
360        23 13 &  47 43 &
432        31 23 &  109 107 &
528        37 29 &  47 41 &
768        67 61 &  193 191 &
888        43 31 &  113 109 &
960        53 43 &  241 239 &
1032      89 83 &  131 127 &
1080      37 17 &  271 269 &
1128      53 41 &  283 281 &
1272      59 47 &  109 103 &
1392      41 17 &  349 347 &
1488      43 19 &  97 89 &
1512      41 13 &  61 47 &
1608      73 61 &  137 131 &
1632      41 7 &  59 43 &
1728      43 11 &  433 431 &
1920      47 17 &  163 157 &

Están publicadas en http://oeis.org/A090788

72, 360, 432, 528, 768, 888, 960, 1032, 1080, 1128, 1272, 1392, 1488, 1512, 1608, 1632, 1728, 1920, 2088, 2112, 2232, 2352, 2400, 2448, 2568, 2688, 2808, 3048, 3168, 3240, 3288, 3480, 3648, 3768, 4008, 4032, 4128, 4248, 4272, 4392, 4488, 4512, 4992.

Con este código PARI, inspirado en la función anterior, se reproduce el resultado.

i=4; while(i<=5000, k=0; m=2; while(m*m<=i, if(i%(2*m)==0, a=(i/m-m)/2; b=a+m; if(isprime(a)&&isprime(b), k+=1)); m+=2); if(k==2, print1(i, ", ")); i+=4)



Por mera curiosidad, se incluyen a continuación los números que cumplen ser diferencia de cuadrados de primos de tres formas distintas. Basta sustituir k=2 en la función por k=3:

120        13 7 &  17 13 &  31 29 &
168        17 11 &  23 19 &  43 41 &
312        19 7 &  29 23 &  41 37 &
408        23 11 &  37 31 &  103 101 &
480        23 7 &  29 19 &  43 37 &
552        29 17 &  71 67 &  139 137 &
600        31 19 &  53 47 &  151 149 &
672        29 13 &  31 17 &  59 53 &
720        29 11 &  41 31 &  181 179 &
1008      37 19 &  43 29 &  67 59 &
1200      37 13 &  79 71 &  103 97 &
1800      43 7 &  59 41 &  227 223 &
2160      47 7 &  113 103 &  139 131 &
2472      109 97 &  311 307 &  619 617 &
2832      71 47 &  181 173 &  239 233 &
2880      61 29 &  89 71 &  149 139 &
3312      59 13 &  101 83 &  829 827 &
3672      61 7 &  71 37 &  461 457 &
4560      79 41 &  107 83 &  233 223 &
5040      73 17 &  83 43 &  149 131 &
5640      109 79 &  151 131 &  241 229 &
6120      79 11 &  103 67 &  107 73 &
6480      101 61 &  409 401 &  1621 1619 &
6528      83 19 &  113 79 &  547 541 &
7248      163 139 &  457 449 &  607 601 &
7320      137 107 &  193 173 &  613 607 &
7752      89 13 &  131 97 &  971 967 &
7872      89 7 &  139 107 &  659 653 &
8160      109 61 &  137 103 &  683 677 &
8352      101 43 &  241 223 &  2089 2087 &
8400      103 47 &  109 59 &  307 293 &

Puedes seguir con la cuestión para cuatro, cinco o seis diferencias. Basta cambiar la última condición k=2 en Basic o k==2 en PARI. En las siguientes sucesiones de OEIS tienes los listados:


Hay más, pero con estos ejemplos basta. Puedes indagar los casos de siete, ocho o más.

Correspondencias entre los que son suma y sus correspondientes diferencias:


Una cuestión curiosa es la extraer casos de la primera parte de esta entrada, sumas de cuadrados de primos, con los de la segunda, de diferencias de primos. Lo vemos con un ejemplo concreto:

410=19²+7²=17²+11²

Al ser distintos los sumandos, transponiendo términos, surgen dos grupos de diferencias iguales: 19²-17²=11²-7²=72

19²-11²=17²-7²=240

Así que del número 410, equivalente a dos sumas de primos distintos, obtenemos otros dos números, 72 y 240, que pertenecen a los casos de diferencias de cuadrados de primos. Ocurre también el hecho contrario, que de 72 o 240, transponiendo términos, podemos obtener un caso de suma de cuadrados de primos. La correspondencia es múltiple y no siempre recíproca, por lo que sólo podemos constatar qué números de un grupo se relacionan con el otro.

No se incluyen los listados que se han usado para establecer correspondencias entre un conjunto y otro. En este listado se pueden apreciar los casos de diferencias de cuadrados de primos que se extraen de los de sumas múltiples de cuadrados

Correspondencias entre los que son suma y sus correspondientes diferencias:

338        120  120
410        240  72
578        240  240
650        240  168
890        480  312
1010      792  120
1130      672  120
1490      840  408
1730      1320  312
1802      840  720
1898      1320  480

Por ejemplo, 1730=41²+7²=37²+19², y transponiendo términos:

41²-19²=37²-7²=1320

Y también

41²-37²=19²-7²=312

Podemos seguir las rutas opuestas, desde los que son diferencia de cuadrados a las correspondientes sumas.

Por ejemplo, 72=11²-7²=19²-17² y transponiendo:

11²+17²=7²+19²=410, que pertenece a nuestro primer listado.

Aunque las correspondencias no son biunívocas, con paciencia se pueden construir cadenas. Lo dejamos ahí.