lunes, 18 de septiembre de 2023

Persistencia multiplicativa

Neil Sloane introdujo este término en su artículo [The persistence of a number, J. Recreational Math., 6 (1973), 97-98] En él define esta persistencia multiplicativa (existe otra muy popular, aditiva) de la forma siguiente:

Se multiplican las cifras del número (aquí sólo veremos las de base 10) y se reitera esta operación con los números obtenidos. Estos productos, como veremos, formarán una sucesión decreciente, y se cuentan las iteraciones necesarias hasta llegar a un producto de una sola cifra. Al número de esos pasos se le denomina índice de persistencia multiplicativa, y al número final resultante, raíz digital multiplicativa del número (existe otra raíz digital aditiva).

Lo vemos con un ejemplo: Iniciamos con el número 762. El producto de sus cifras es 84. Multiplicamos cifras de nuevo, resultando 32, y reiteramos:

762 – 84 – 32 – 6

El que los productos sean decrecientes es fácil de entender. Si el número es de una cifra, no hay producto y el índice lo definimos como 0. Si tiene dos cifras, sean a y b se tiene:

N=10*a+b>10*a>a*b, luego decrece.

Es fácil usar el mismo razonamiento cada vez que se añada una cifra:

100a+10b+c>10*10*a>a*b*c

Y así ocurrirá al ir añadiendo cifras.

Si uno de los productos posee una cifra 0, se terminará el proceso y su raíz digital valdrá 0. Paul Erdős sugirió ignorar los ceros en el producto, lo que daría lugar a procesos totalmente distintos.

Si dos números coinciden en sus cifras salvo en la cifra 1, tendrán la misma persistencia, como ocurre con 65, 165, 56111,... porque el producto de sus cifras es 30 en todos los casos.

Si dos números son anagramáticos (mismas cifras con la misma frecuencia) coincidirán también en sus resultados. Por tanto:

El proceso de persistencia es invariante al orden de las cifras y a la presencia de la cifra 1, con cualquier frecuencia.

Es fácil entender que el coincidir en la persistencia creará clases de equivalencia en los números naturales, e igual ocurrirá con los que coincidan en la misma raíz digital. Serán clases distintas, e incluso podemos considerar las clases en las que se coincida en los dos números, índice y raíz.

A continuación traduciremos todo esto a los procedimientos de las hojas de cálculo.

 Uso de una hoja de cálculo

Para estudiar este tema necesitamos varios procesos:

•    Extraer las cifras de un número dado

•    Proceder al producto de las cifras

•    Construir el algoritmo de iteraciones hasta llegar a la raíz digital

•    Expresión de los resultados, que pueden ser el índice de persistencia, la raíz digital o una cadena de texto que unifique ambos.

Procederemos por pasos.

Extracción de cifras

Este `proceso es habitual en nuestros trabajos. Existen varias técnicas, y hemos elegido esta:

Public Function cifra(m, n)

'Extrae la cifra n del número m si es natural. En caso contrario devuelve -1. También devuelve -1 si excede del número de cifras

Dim a, bIf esnatural(m) Then ‘Actúa sobre naturales
If n > numcifras(m) Then ‘La función numcifras se añadirá a continuación
cifra = -1
Else
a = 10 ^ (n - 1)
b = Int(m / a) - 10 * Int(m / a / 10) ‘Procedimiento de troceado de la cifra
cifra = b
End If
Else
cifra = -1
End If
End Function

Conteo de las cifras

Public Function numcifras(n)

Dim nn, a
'Calcula el número de cifras enteras de un número natural. Si no lo es, devuelve un cero
If esnatural(n) Then
a = 1: nn = 0
While a <= n
a = a * 10: nn = nn + 1 ‘Va multiplicando por 10 hasta llegar a n
Wend
numcifras = nn
Else
numcifras = 0
End If
End Function

Producto de cifras

Si poseemos una forma de extraer las cifras y otra de contarlas, construir su producto es fácil:

Public Function producifras(n)

Dim a, b, p, i
p = 1 ’Recogerá el producto
a = numcifras(n) ’Se cuentan las cifras
For i = 1 To a
p = p * cifra(n, i) ’Construcción del producto
Next i
producifras = p
End Function

Todas las funciones presentadas, aunque están escritas para VBasic, tienen traducción inmediata a otros lenguajes de programación.

Una vez que contamos con la función producto, es fácil organizar el proceso de persistencia. En un primer paso fijaremos que el resultado del proceso se nos devuelva en modo texto con todos los pasos y resultados. Para estadísticas cambiaremos el resultado o bien sólo al índice o a la raíz digital. La función correspondiente puede ser esta:

Cálculo de la persistencia

Function persistencia$(n) ‘Resultado en modo texto

Dim s$
Dim a, q
s = Str$(n) + ", " ‘Inicio del resultado
a = n ‘Variable que recoge el valor de n
q = 0 ‘Inicio del índice para números de una cifra
While numcifras(a) > 1
a = producifras(a) ‘Proceso de persistencia
s = s + Str$(a) + ", " ‘Incorporación al resultado
q = q + 1
Wend
s = s + "Índice: " + Str$(q) + " Raíz digital: " + Str$(a) ‘Creación del resultado
persistencia = s
End Function

Con esta función obtenemos el historial completo del proceso. En la siguiente tabla hemos elegido un intervalo de números al azar:


Se percibe un desequilibrio en los resultados. Es evidente la gran mayoría de resultados con raíz digital cero, pues la presencia de esa cifra detiene el proceso. Respecto a los índices, ninguno es mayor que 3. Escasean los índices mayores. Por ejemplo, el índice 11 no aparece hasta el número 10233.

Hemos construido una tabla de frecuencias para las raíces digitales del 0 al 9999, para hacer patente el desequilibrio entre ellas:

Aparte del caso del 0, es lógico que las frecuencias de 3 y el 7 sean tan pequeñas, pues muy pocos productos desembocarán en ellas. En el caso del

7, basta observar qué números desembocan en él:

17, 71, 117, 171, 711, 1117, 1171, 1711, 7111

También esta lista justifica el resultado del 9, porque todas las posibilidades de combinar la cifra 1 con la 7 son 2+3+4=9. Es fácil generalizar este resultado a más cifras.

Persistencia con potencias de cifras

El producto de cifras se puede construir con potencias de las mismas. Hablaríamos entonces de k-persistencia multiplicativa. Todos los números, salvo los “repunits”,1, 11, 111, …que tienen k-raíz digital 1, todos los demás poseen raíz 0. Lo hemos comprobado modificando nuestra función. Este hecho resta interés a este concepto.

 

miércoles, 6 de septiembre de 2023

Regresos 8 – Diferencia entre Catetos

En el año 2010 se publicó en este blog una entrada dedicada a los números

1, 7, 17, 23, 31, 41, 47, 49, 71, 73, 79 (https://hojaynumeros.blogspot.com/2010/10/1-7-17-23-31-41-47-49-71-73-79-primera.html), relacionados con las diferencias entre catetos en una terna pitagórica.

También se estudió el caso de los catetos consecutivos en tres entradas sobre “Oblongos y pitagóricos”

 (https://hojaynumeros.blogspot.com/2010/03/oblongos-y-pitagoricos-1.html y siguientes)

En estas entradas se llegó a que las diferencias entre catetos en ternas primitivas sólo pueden ser 1, 7, 17, 23, 31, 41, 47, 49, 71, 73, 79, 89, 97, 103, 113, 119, ...(http://oeis.org/A058529), que se caracterizan porque sus factores primos son del tipo p=8k+1 o p=8k-1.

Como en otras ocasiones, la disponibilidad de nuevas técnicas y herramientas nos lleva a regresar a ellos, ampliando el tema de las diferencias entre catetos. Damos algunas vueltas más a estas cuestiones.

Función para encontrar catetos con una diferencia dada

El primer paso para comprender el problema es tener en cuenta que lo que pretendemos es resolver esta ecuación para valores enteros positivos:

x²+(x+k)²=y²

Creamos una función de texto que devuelve las primeras soluciones respecto a k

function catetos_ligados$(k)
dim x,y
dim s$

x=3
s$=""
while x<500
y=x^2+(x+k)^2
if escuad(y) then ‘Es una solución
y=sqr(y)
s=s+"## "+str$(x)+", "+str$(x+k)+", "+str$(y)+" " ‘Se publica
end if
x=x+1
wend
if s="" then s="NO"
catetos_ligados=s
end function

Con esta función obtenemos los resultados para k=7

5,  12,  13
8,  15,  17
21,  28,  35
48,  55,  73
65,  72,  97
140,  147,  203
297,  304,  425
396,  403,  565

Si le pedimos tan solo el valor de x, resultará la sucesión

 5,  8,  21,  48,  65,  140,  297,  396,  833,  1748,  2325,  4872,  10205,  13568,  28413,  59496,  79097…

Esta sucesión coincide con la publicada en https://oeis.org/A076296

A076296              Consider all Pythagorean triples (X,X+7,Z); sequence gives X values.   

-3, 0, 5, 8, 21, 48, 65, 140, 297, 396, 833, 1748, 2325, 4872, 10205, 13568, 28413, 59496, 79097, 165620, 346785, 461028, 965321, 2021228, 2687085, 5626320, 11780597, 15661496, 32792613, 68662368, 91281905, 191129372, 400193625, 532029948, 1113983633

Esta sucesión posee infinitos términos, pues, según vimos en las entradas a las que regresamos, se cumple lo siguiente:

Si u y v engendran una terna pitagórica mediante las fórmulas 2uv, u2-v2 y u2+v2, los valores 2u+v y u engendran otra terna con la misma diferencia de catetos.

Así, el  primer ejemplo conseguido con diferencia 7, (5, 12,13) se ha generado con 32+22=13, 2*3*2=12 y 32-22=5, con lo que producirá también diferencia 7 el par de valores u=2*3+2=8 y v=3

Quedaría 82+32=73, 82-32=55 y  2*8*3=48, es decir, la terna (48, 55, 73), con diferencia entre catetos de 7, que figura en el listado.

Reiterando el procedimiento resultarían tantas ternas como deseáramos.

Estudio algebraico

Desarrollamos la ecuación correspondiente a la diferencia 7:

x2+(x+7)2=y2

2x2+14x+49=y2

4x2+28x+98=2y2

(2x+7)2+49=2y2

Si cambiamos de variable: u=2x+7, nos queda 2y2-u2=49

De esta forma se justifica la relación con los contenidos de las entradas referidas más arriba, porque tratamos con las soluciones de una ecuación del mismo tipo 2x2-y2=k, con lo que podemos aplicar lo que conocemos de ella.

Primera recurrencia

La ecuación 2x2-y2=k2 la escribiremos mejor como x2-2y2=-k2, para destacar que es del llamado tipo-Pell, pues puede basarse en esa famosa ecuación x2-Dy2=1, que tiene solución si D no es cuadrado perfecto (ver en este blog https://hojaynumeros.blogspot.com/2010/02/ecuacion-de-pell.html) y que es parecida a ella.

La ecuación que nos ocupa no es de ese tipo, por lo que su resolución es más complicada, pero existe una estrategia, si se dispone de una solución particular, para generar más soluciones (quizás no todas). Consiste en aplicar la recurrencia propia de la ecuación de Pell (aunque la que tratamos sea solo tipo-Pell), que copiamos de la entrada referida:

Xn+Yn√D = (Xn-1+Yn-1√D) (X0+Y0√D)

En este caso disponemos de la primera terna (5,  12,  13), y sabemos ya que si hacemos u=2x+7, se cumple que 2y2-u2=49, con lo que, cambiando la variable, Xn=2*5+7=17 e Yn es la hipotenusa 13 de esa terna, y ambas cumplen 172-2*132=-49, luego (17, 13) es una solución particular (Xn,Yn).

Ahora hay que tomar como (X0,Y0) una solución de la ecuación de Pell x2-2y2=1, que claramente puede ser (3, 2). Todo esto parece complicado, pero repasando se entiende. Resumimos:

(Xn,Yn) es una solución de x2-2y2=-49, y podemos elegir el par (17,13)

(X0,Y0) es una solución de x2-2y2=1, y elegimos (3,2)

Según nuestra entrada referida, separando términos queda:

Xn = Xn-1X0+Yn-1Y0D

Yn = Xn-1Y0+Yn-1X0

En nuestro caso

Xn = 3Xn-1+2*2Yn-1

Yn = 2Xn-12+3Yn-1

Así podemos buscar otras soluciones a partir de 17 13.

Lo hemos intentado y resulta que nos devuelve todas las soluciones que deseemos, pero partiendo de Xn nos lleva a Xn+3. En la siguiente tabla lo destacamos:


La zona amarilla destaca las soluciones que no se obtienen por recurrencia. Las dos columnas centrales se han obtenido con la recurrencia explicada, a partir de (17, 13). El valor de X se obtiene de u=2x+7 o x=(u-7)/2, y el del otro cateto, restando 7 unidades a X.

Hemos comprobado que esta recurrencia nos devuelve más ternas, y se puede aplicar a cualquier otro valor de K.

Otros aspectos del problema

También se cumple que u2+72=2y2 por lo que u pertenece a https://oeis.org/A076293, ya que  la media cuadrática de los dos cuadrados, u2 y 72 es entera. Esto ocurrirá en general, para un valor k adecuado de la diferencia: u2+k2=2y2, con lo que u=2x+k siempre pertenecerá a esa sucesión.

Si nos limitamos a ternas pitagóricas primitivas, un cateto podría representarse com u2-v2 y el otro como 2uv, según un procedimiento muy conocido. En este caso, salvo quizás el signo, se cumplirá que u2-v2-2uv=k, o bien:

(u-v)2-2v2=k

Según las propiedades de estas ternas, las bases de los dos cuadrados han de ser de distinta paridad y números primos entre sí. Por eso k ha de ser impar. Esto justifica el que los valores de k posibles han de pertenecer a la sucesión 1, 7, 17, 23, 31, 41, 47, 49, 71, 73, 79,…pues estos son las soluciones de la ecuación x2-2y2=k, similar a la obtenida con cambios de variables adecuados. En https://oeis.org/A058529 se explica su propiedad de tener sólo factores primos del tipo 8k+1 o del 8k-1.

Una propiedad interesante derivada de todo lo anterior es que si un valor de k es válido para ser diferencia de catetos, también los es k2, porque ambos son soluciones de una ecuación del tipo x2-2y2=k. Lo hemos comprobado con la función catetos_ligados. En la imagen se refleja esta propiedad en el caso de k=71:

 


Segunda recurrencia

En OEIS A076296 se propone una ecuación de recurrencia para los valores X del cateto menor en el caso ya estudiado de k=7. Es esta:

 a(n)=6*a(n-3)-a(n-6)+14.

La hemos comprobado con nuestra herramienta ecurrecurre (ver  listado de herramientas para el blog en http://www.hojamat.es/sindecimales/otros.htm) en el apartado de recurrencias no homogéneas.

En esta captura de pantalla se pueden comprobar los coeficientes 6, -1, 14

 


Hemos copiado los términos de tres en tres.

Este resultado nos anima a probar cono otros valores posibles de k. El siguiente es 17. En primer lugar, hemos creado la sucesión de lados de las ternas usando nuestra función para VBasic:

##  7,  31,  25 ##  28,  73,  53 ##  51,  119,  85 ##  88,  193,  137 ##  207,  431,  305 ##  340,  697,  493 ##  555,  1127,  797 ##  1248,  2513,  1777 ##  2023,  4063,  2873 ##  3276,  6569,  4645 ##  7315,  14647,  10357 ##  11832,  23681,  16745 ##  19135,  38287,  27073 ##  42676,  85369,  60365

A continuación hemos seleccionado los catetos menores de tres en tres (los que aparecen en negrita). Los hemos volcado como datos en ecurrecurre, eligiendo el caso de “No homogénea”. El resultado confirma nuestra intuición. Se mantienen los coeficientes y el término independiente resulta ser 2k, como en el caso de k=7:

 

No es de extrañar el valor de 34, ya que, en realidad, todas estas sucesiones están ligadas con https://oeis.org/A076293, que contiene los valores de 2x+k, según vimos más arriba. En esta sucesión la recurrencia es homogénea: a(n)=6a(n-3)-a(n-6), según hemos comprobado también. Por eso se produce un desfase entre ambas sucesiones, que se traduce en el término independiente 2k.

Sea x(n)=(a(n)-k)/2. Podemos manipular la ecuación de recurrencia:

a(n)-k=6(a(n-3)-k)-(a(n-6)-k)+4k

(a(n)-k)/2=6((a(n-3)-k)/2)-(a(n-6)-k)/2+2k

Y queda x(n)=6x(n-3)-x(n-6)+2k

Hemos demostrado que los valores de X para cualquier valor de k se pueden encontrar mediante la recurrencia a(n)=6a(n-3)-a(n-6)-2k, basándonos en que los términos de https://oeis.org/A076293 se generan con esta otra: a(n)=6a(n-3)-a(n-6).

miércoles, 28 de junio de 2023

En el punto medio de dispares

 ¿Qué números son promedio entre su cuadrado más cercano y el triangular también más cercano? Es una pregunta a la que no es difícil responder con las herramientas que tenemos a nuestra disposición, pero que requiere un cierto cuidado a la hora de plantear un algoritmo. Veremos más adelante las dificultades que se pueden presentar. Toda la entrada se referirá a la posible estructura de ese algoritmo y sus problemas. No abordaremos apenas estudios teóricos.

En primer lugar estudiaremos técnicas que nos sirvan para todos los casos, sean cuadrado con triangular, cubo con cuadrado o primo con oblongo, para después descender a detalles en cada tipo de número. Para estas búsquedas llevamos tiempo usando las funciones ESCUAD, ESTRIANGULAR, ESOBLONGO, ESCUBO y otras similares. Puedes encontrarlas todas usando Buscar en el blog.

Estas son algunas de ellas:

Public Function escuad(n) As Boolean
If n < 0 Then
escuad = False
Else
If n = Int(Sqr(n)) ^ 2 Then escuad = True Else escuad = False
End If
End function


Public function estriangular(n) as boolean
dim a

a = Int(sqr(8*n+1))
if a*a=8*n+1 then estriangular = true else estriangular = false
end function

Function escubo(n)
Dim a

a = Int(n ^ (1 / 3) + 10 ^ (-6))
If a * a * a = n Then escubo = True Else escubo = False
End Function

Con cualquiera de ellas se pueden construir las funciones PROXIMO y ANTERIOR, en las que un parámetro tipo decidirá si se busca un cubo o un oblongo, o preferentemente, cambiando una línea de código para sustituir la búsqueda de un tipo por la de otro. Lo explicamos con un ejemplo:

La siguiente versión de PROXIMO busca el cuadrado más cercano entre los mayores que un número

Function proximo(a) As Long
Dim p, prim As Long
Dim sale As Boolean

p = a + 1: sale = False: prim = 0
While Not sale
If escuad(p) Then prim = p: sale = True
p = p + 1
Wend
proximo = prim
End Function

Por ejemplo, te dará que PROXIMO(78)=81

Si sustituimos ESCUAD por otra función, nos servirá el mismo código para buscar triangulares, cubos o pentagonales. En general, se dará por supuesto que cambiaremos esa línea de código para pasar de un tipo a otro.

De igual forma se puede construir la función ANTERIOR:

Function anterior(a) As Long
Dim p, prim As Long
Dim sale As Boolean

p = a -1: sale = False: prim = 0
While Not sale and p>0
If escuad(p) Then prim = p: sale = True
p = p - 1
Wend
anterior = prim
End Function

Por ejemplo, en este caso para cuadrados te dará ANTERIOR(15)=9

Caso de cuadrados y triangulares

Candidatos a ser los más próximos

 La primera idea que se nos ocurre es la de buscar el cuadrado más próximo por la izquierda y también por la derecha, y quedarnos con el más próximo. No hay posibilidad de “empate”, porque serían dos cuadrados consecutivos, n2 y (n+1)2, y entre ellos siempre existe una diferencia impar, 2n+1, por lo que no existirá un número en el punto medio. El cuadrado más cercano siempre será único.

Por contra, entre dos triangulares consecutivos si existe esa posibilidad de empate. Por ejemplo, 32 está comprendido entre los triangulares 28 y 36, y a 4 unidades de cada uno de ellos, por lo que el título de “más cercano” sirve para cualquiera de ellos. Vemos cuándo ocurre esto:

Sean dos triangulares consecutivos n(n-1)/2 y n(n+1)/2. Su diferencia será n, luego si este valor es par, tendremos dos triangulares cercanos a un número a la misma distancia. Entre 1 y 3, el punto medio es 2, su promedio. Entre 6 y 10, el 8, entre 15 y 21, el 18, y así con todos los ejemplos similares. La consecuencia es que para triangular más cercano a un número dado tendremos dos candidatos. Por cierto, ese número central es fácil ver que será el doble de un cuadrado, 2, 8, 18, 32,...

Ese empate entre triangulares cercanos habrá que tenerlo en cuenta en el algoritmo. Su núcleo podrá ser el siguiente:

for i=2 to 1000
c=0 ‘Esta variable controlará el posible empate entre triangulares
a=anteriorcuad(i) 'Cuadrado menor
b=proximotriang(i) 'Triangular mayor
m=anteriortriang(i) 'Triangular menor
n=proximocuad(i) 'Cuadrado mayor
if i-a>n-i then a=n 'Se queda "a" como cuadrado más cercano tomando el valor de n
if b-i>i-m then b=m 'El triangular "b" es el más cercano, quizás con el valor de m
if b-i=i-m then ‘Hay empate
If escuad(2 * i - m) Then a = 2 * i - m: b = m: c = 1
If escuad(2 * i - b) Then a = 2 * i - b: c = 1 ' El valor c=1 indica que se ha resuelto el empate
end ifif i=(a+b)/2 or c=1 then ‘Se han encontrado los más próximos o empate resuelto
escribe(i, a, b)
next i


Alguna parte de este planteamiento se ha escrito en pseudocódigo para mayor claridad (anteriorcuad, proximocuad,...). Hemos incorporado estas líneas a un buscador con el siguiente resultado:

2, 5, 23, 32, 47, 52, 65, 86, 140, 161, 170, 193, 203, 228, 266, 312, 356, 389, 403, 438, 453, 490, 545, 610, 671, 716, 735, 782, 802, 851,...

Estos son los primeros números naturales que se encuentran en el punto medio entre el cuadrado y el triangular más cercano. En forma de tabla, podemos añadir en una segunda columna el cuadrado y el triangular más cercanos, de los que es promedio el número. No tienen que aparecer en este orden:

Están publicados en https://oeis.org/A233074

Alternativa para este caso

En este caso de cuadrados y triangulares no son necesarias las funciones POSTERIOR y ANTERIOR. Para los cuadrados bastará con elegir, para un número N los siguientes, expresados con lenguaje de Excel o Calc:

A=(ENTERO(RAIZ(N)))^2   como anterior y  B=(1+ENTERO(RAIZ(N)))^2 como posterior

Para los triangulares es un poco más complicado. Las siguientes expresiones son el resultado de resolver la ecuación x(x+1)/2=N.

X=ENTERO((-1+RAIZ(8*N+1))/2), que es el “falso orden” triangular de N

A=X(X+1)/2 como anterior y B=(X+1)(X+2) como posterior.

 Con estas fórmulas se puede construir un esquema de hoja de cálculo que nos indique, con un solo golpe de vista, qué cuadrados o triangulares son los más cercanos, así como si existe empate o no. En la imagen siguiente se ha analizado el número 456 con las fórmulas explicadas, resultando 441 y 465 como los candidatos. Como sus diferencias, 15 y 9, no son iguales, 456 no cumpliría lo exigido.

 


 

 Caso de cuadrados y cubos

 En este caso podemos usar el procedimiento general, basado en PROXIMO y ANTERIOR, pero usando ESCUBO en lugar de ESTRIANGULAR.

Vimos que en los cuadrados no existía posibilidad de empate en las distancias por la izquierda o derecha del número. Igual ocurrirá con los cubos, porque uno será par y otro impar.

Aplicamos, pues, el procedimiento general sin tener en cuenta los empates:

 


También estos están ya publicados:

 A233075              Numbers that are midway between the nearest square and the nearest cube.           

6, 26, 123, 206, 352, 498, 1012, 1350, 1746, 2203, 2724, 3428, 4977, 5804, 6874, 8050, 9335, 10732, 12244, 13874, 17500, 19782, 21928, 24519, 26948, 29860, 32946, 35829, 39254, 42862, 50639, 54814, 59184, 63752, 69045, 74036, 79234, 85224, 90863, 97340,

Alternativa para este caso

 Vimos que PROXIMO y ANTERIOR se podían sustituir, en el caso de los cuadrados, por A=(ENTERO(RAIZ(N)))^2   como anterior y  B=(1+ENTERO(RAIZ(N)))^2 como posterior.

Los cubos admiten un planteamiento similar

A=(ENTERO(N^(1/3)))^3


B=(1+ENTERO(N^(1/3)))^3

En la imagen observamos con el número 280 que no hay posibilidad de empate.


Promedios entre primos y cuadrados

 Aquí sí existe la posibilidad de empate entre primos, por lo que habrá que aplicar el algoritmo general presentado más arriba. Los cuadrados han de ser impares, para que las diferencias cuadrado-primo sean pares y admitan un punto medio.

Como vemos en la tabla resultante, la abundancia de soluciones les resta interés:

 

observan diferencias de valor 2, 4, 6, 8,…siendo bastante frecuentes las primeras, en las que el número primo es del tipo n2+2 o n2-2. Se podría hacer un estudio para estos primeros valores, pero queda para otra ocasión.


Esta entrada da fin al curso 2022-23. En septiembre, si el ánimo acompaña, iniciaremos uno nuevo.

 

 

lunes, 19 de junio de 2023

Sumas con anagramáticos

En esta entrada jugaremos un poco con números que comparten cifras y están relacionados mediante algunas operaciones entre ellos.

Sumandos anagramáticos

Comenzamos con aquellos números que son el total de una suma de dos números anagramáticos con ellos, es decir, los tres datos han de compartir cifras y con la misma frecuencia. Aunque están publicados casos similares, aquí exigiremos que los dos sumandos anagramáticos tengan el mismo número de cifras, como en

954=459+495

5238=2385+2853

No tendremos en cuenta ningún sumando que comience por cero.

Para encontrarlos diseñaremos una función de VBasic para Excel y Calc. En ella se usará la función cifras_identicas, cuyo código puedes encontrar en

https://hojaynumeros.blogspot.com/2020/11/consecutivos-con-las-mismas-cifras.html

También usamos nuestra función numcifras

(ver https://hojaynumeros.blogspot.com/2018/04/cancelaciones-anomalas-12.html)

Function dobleanagram$(n)

Dim a, m

Dim s$

s$ = "" ‘Contenedor de sumandos

m = numcifras(n) ‘Cuenta las cifras

For a = 10 ^ (m - 1) To n / 2 ‘Busca con el mismo número de cifras

If cifras_identicas(a, n) And cifras_identicas(n - a, n) Then s = s + " # " + Str$(a) + "+" + Str$(n - a) ‘Solución

Next a

dobleanagram = s

End Function

 Con esta función obtenemos los primeros resultados:




Llama la atención, y era algo esperable, que las soluciones se pueden agrupar en familias, como 954, 9045, 9504, 9540, 9954…Es fácil ver que con un simple cambio se reproducen resultados conocidos. El arrastre de cifras en las sumas influirá en que aparezcan más o menos familias.

Todos los resultados de este problema han de ser múltiplos de 9. En efecto, si los dos sumandos poseen las mismas cifras, serán también iguales sus restos módulo 9, con lo que el total tendría como resto su suma, y al tener las mismas cifras, la única posibilidad es que esos restos sean los tres nulos.

Un resultado similar está publicado en https://oeis.org/A121969, pero ahí se admiten números que comiencen por cero. Basta cambiar una línea en la función para obtener estos resultados, pero no merece la pena.

Anagramático más sus cifras

Otro caso relevante es el de un número igual a un anagramático con él sumado con sus cifras. Tiene un cierto parecido con el caso anterior, porque, en realidad, se usan las mismas cifras, pero aquí están como sumandos separados. Es la situación opuesta a la de los autonúmeros, que no admiten ninguna descomposición de este tipo

(ver https://hojaynumeros.blogspot.com/2015/03/autonumeros-1.html)

Existe una forma muy sencilla de resolver este caso, y es restarle al número sus propias cifras, y ver si la diferencia es anagramática con el total. Para las búsquedas necesitaremos otra función nuestra, sumacifras(n,k), que suma las cifras de n elevadas previamente al exponente k. Esta función la puedes encontrar en el enlace del párrafo anterior.

Para este caso y los siguientes usaremos esta otra función:

Function autoanagram$(n, k)

Dim a, m

Dim s$

s = ""

m = numcifras(n)

a = n - sumacifras(n, k) ‘Al número le restamos potencias de sus cifras

If cifras_identicas(n, a) Then s = s + " # " + Str$(a) ‘Otra nueva solución

autoanagram = s

End Function

Si la usamos con el parámetro k igual a 1, obtendremos las primeras soluciones:


 Puedes comprobar cualquiera de la lista:

810=801+8+0+1

1953=1935+1+9+3+5

Aquí también, y por la misma razón, los dos números implicados han de ser múltiplos de 9.

Estos números sí están publicados, con el mismo planteamiento nuestro, en https://oeis.org/A248209

En la página enlazada puedes estudiar los códigos PARI que contiene. El segundo es similar al usado aquí. No hemos acudido a este lenguaje porque la hoja de cálculo suele ser rápida en estos casos. Tampoco hemos exigido que las soluciones sean múltiplos de 9 por la misma razón. No suelen ser búsquedas muy lentas.

Otros casos con potencias

Como sumacifras(n;k) admite potencias, es sencillo ampliar la búsqueda a los casos en los que las cifras estén elevadas al cuadrado, cubo o cualquier otra potencia.

Cifras al cuadrado

Si tomamos k=2 en sumacifras dentro de la función autoanagram, resultarán parejas de anagramáticos que se diferencien en la suma de los cuadrados de sus cifras.

Aquí los sumandos no tienen las mismas cifras, por lo que las soluciones no han de ser múltiplos de 9, pero sí lo tiene que ser la suma de los cuadrados de las cifras, para conseguir un par de anagramáticos. Ejemplos:

271=217+22+12+72, donde la suma de cuadrados es 54, múltiplo de 9.

2450=2405+22+42+02+52, con suma de cuadrados igual a 45.

 

Cifras al cubo

Para k=3 resultan:

Por ejemplo:

1533=1353+13+33+53+33=1353+1+27+125+27=1353+180

 

Otras potencias

K=4


3211=3112+34+14+14+24=3112+99

K=5


14310=13041+15+35+05+45+15=13041+1+243+0+1024+1=13041+1269

Dejamos aquí las potencias de cifras.

 

Anagramáticos con producto de cifras

Podemos plantearnos pares de anagramáticos que se diferencien en el producto de sus cifras. Usaremos nuestra función producifras, que es similar a sumacifras (ver https://hojaynumeros.blogspot.com/2018/09/permutacion-de-cifras-al-sumar-su.html). En este enlace puedes leer unos resultados más exigentes que los propuestos aquí, pues no basta con que los pares sean anagramáticos, sino que han de ser también simétricos. En las búsquedas hay que eliminar los números en los que el producto de las cifras sea cero, pues aparecerían muchos casos triviales. En nuestro caso obtenemos estos pares:


Por ejemplo, 1631=1613+1*6*1*3=1613+18

Aquí también el producto de cifras ha de ser múltiplo de 9, porque el par de anagramáticos comparte el mismo resto módulo 9. Significa que una cifra ha de ser 9, o bien, que figuren 3 o el 6 repetidos o estar presentes ambos. Recorriendo la tabla se comprueba.

 

 

jueves, 8 de junio de 2023

Generación de primos sumando cuadrados y otros (2)

En la anterior entrada generamos sucesiones de primos en la que cada término era el menor primo con diferencia cuadrada respecto al anterior. De forma más breve realizaremos un recorrido con otros casos que tengan otro carácter.

Triangulares

En el caso de cuadrados usábamos la función PRIMSALTO (ver entrada anterior del blog).

Ahora sustituimos en la función PRIMSALTO la función ESCUAD por la función ESTRIANGULAR, y elegimos el 2 como primo de inicio. Con ello encontraremos los primeros primos que posean una diferencia triangular con el anterior, siendo cada uno el mínimo con esa propiedad.

Obtenemos:

Aquí lo interesante es que todas las diferencias, salvo la primera, han de ser pares, por lo que los órdenes de las mismas han de pertenecer a uno de los tipos 4k o 4k-1. Es fácil razonarlo a partir de la expresión n(n+1)/2.

Con este inicio del primo 2, están publicados en

https://oeis.org/A275030

Ocurre con estos primos algo similar a lo que se observaba en el caso de cuadrados, y es que si se alcanza un primo del tipo 6n+5, todos sus consecutivos comparten ese mismo tipo. Lo puedes comprobar en el caso de 97, que hemos elegido al azar:


A partir del 137 todos son del tipo 6n+5. Se puede razonar estudiando seis casos. En primer lugar distinguiremos entre triangulares de orden 4k o de orden 4k-1 (ver párrafos anteriores) y dentro de ellos, que k sea del tipo 3m, 3m+1 o 3m-1. Lo desarrollamos suponiendo que partimos de un primo del tipo 6n+5 y llamamos T al triangular que se suma:

Primer caso T=2k(4k+1)=8k2+2k

6n+5+T=6n+5+8k2+2k

Si k=3m T es múltiplo de 6, luego sigue la forma 6n+5

Si k=3m+1. T=8(3m+1)2+2(3m+1)=72m2+48m+8+6m+2 que da resto  4 módulo 6, luego pasa al tipo 6n+3, que no es primo. No nos vale.

Si k=3m-1  T=8(3m-1)2+2(3m-1)=72m2-48m+8+6m-2 múltiplo de 6, luego respeta el 6n+5

Segundo caso    T=2k(4k-1)=8k2-2k

Si k=3m es T múltiplo de 6 y respeta el 6n+5

Si k=3m+1 8(3m+1)2-2(3m+1)=72m2+48m+8-6m-2, múltiplo de 6 y respeta el tipo 6n+5

Si k=3m-1  8(3m-1)2-2(3m-1)=72m2-48m+8-6m+2 resto 4 y no resulta primo

O no son válidos los triangulares, porque den resto 4 y convertirían 6n+5 en 6n’+9, no primo o bien se suma un múltiplo de 6 y sigue 6n+5.

Queda, pues, comprobado que al llegar a un primo de ese tipo, se conserva ese carácter.

Primos iniciales, sin antecedentes

Procediendo de forma similar al caso de los cuadrados, descubrimos que estos primos no tienen antecedentes:

3, 5, 7, 11, 17, 19, 23, 31, 37, 41, 43, 47, 59, 61, 67, 71, 73, 79, 83, 97, 101, 103, 109, 113, 127, 131, 139, 151, 157, 163, 167, 179, 181, 191, 193, 197, 199, 211, 223, 229, 241, 251, 263, 269, 271

No debemos confundirnos. En el listado parece que 11 es antecedente de 17, pues su diferencia es el triangular 6, pero la existencia del intermedio 13 invalida la idea.

Primos consecutivos

También en el caso de saltos triangulares se observan primos consecutivos. Estos son los primeros:

23, 29

31, 37

47, 53

53, 59

61, 67

73, 79

83, 89

131, 137

139, 149

151, 157

157, 163

167, 173

173, 179

181, 191

Con cubos

Procediendo de igual forma que en los tipos anteriores obtenemos:

Están publicados en https://oeis.org/A076201, y no presentan, aparentemente, propiedades de interés.

Con oblongos

Al ser los oblongos números pares que son doble de un triangular (son del tipo n(n+1)), se merecen un repaso. Con ellos no se puede iniciar con el primo 2. Estos son los primeros conseguidos con inicio 3:

 


Con oblongos, el tipo de primo que perdura es el 6n+1. En la tabla comprobamos que este hecho comienza en el 7.

Si llamo O al oblongo (da igual su orden, porque siempre es par) tendremos:

6n+1+O = 6n+1+k(k+1)

Si k=3m, 6n+1+(3m)(3m+1) sigue el tipo 6n+1 pues el producto es múltiplo de 6

Si k=3m+1. 6n+1+k(k+1)=6n+1+(3m+1)(3m+2) sería no válido, por ser la suma múltiplo de 3

Si k=3m-1, 6n+1+k(k+1)=6n+1+(3m-1)(3m) sería idéntico al primer caso.

Así que los saltos válidos respetan el tipo 6n+1

Siguiendo un proceder de este blog, cuando se tratan varios tipos de números, al avanzar se prescinde de algunos detalles, para no cansar y también para dar oportunidad a los lectores que deseen explorar por su cuenta. Así que aquí dejamos el tema.