lunes, 22 de noviembre de 2021

Los pseudoprimos

Definición de pseudoprimo 

La idea de número pseudoprimo surge de los grandes teoremas de la Aritmética Modular

(Ver mi publicación http://www.hojamat.es/sindecimales/congruencias/teoria/teorcong.pdf):

Podemos comenzar por el de Euler: Si llamamos j(m) a la indicatriz de Euler de m, se cumplirá que

 aj(m) =1 (mod m)

para todo a primo con m. (Teorema de Euler)

Si m es primo, la igualdad anterior se puede expresar como

am-1 =1 (mod m)

 (Pequeño Teorema de Fermat)

El recíproco no es cierto. Si para un a primo con m se cumple

am-1=1 (mod m), entonces m no tiene que ser necesariamente primo. A estos números compuestos que cumplen el teorema les llamaremos pseudoprimos de Fermat (hay otras clases de pseudoprimos). Este carácter dependerá del valor de la base a.

 

Identificación de pseudoprimos

No es nada complicado identificar un pseudoprimo respecto a una base dada. Las operaciones son sencillas, pero pueden alcanzar números muy grandes, por lo que tendremos que usar técnicas de Aritmética Modular en algunos casos, para abreviar cálculos y datos.

La primera operación es la de obtener el resto de una potencia respecto a un módulo, lo que llamamos resto potencial. En nuestra web figura una hoja de cálculo de hace años, muy simple, que los calcula para datos no muy grandes

http://www.hojamat.es/sindecimales/congruencias/herramientas/hoja/potenciales.xls

La teoría sobre restos potenciales también la puedes consultar en nuestro documento

http://www.hojamat.es/sindecimales/congruencias/teoria/teorcong.pdf

Aquí partiremos de una función que actuará sobre tres datos:

  • ·       Base de la potencia b
  • ·       Exponente p
  • ·       Módulo m

Sobre ellos actuará la función RESTOPOT para Excel y LibreOffice Calc, que irá construyendo la potencia mediante multiplicaciones, pero convirtiendo cada resultado en resto módulo m, con lo que no se disparará la magnitud de los datos. Este es su listado:

Función RESTOPOT

Public Function restopot(b, p, n)

Dim r, m, i

 

r = b Mod n ‘Resto de la base respecto a m

m = 1

For i = 1 To p ‘Se construye la potencia con restos

m = m * r Mod n m irá recorriendo los restos potenciales

Next i

restopot = m

End Function

 Por ejemplo, el resto de 3^26 respecto al módulo 7 sería RESTOPOT(3;26;7)=2, como puedes comprobar en la hoja potenciales.xls presentada más arriba:

 


Con esta función podemos averiguar si am-1 =1 (mod m)  y si m es compuesto, con lo que tendría el carácter de pseudoprimo.

Contando con la función RESTOPOT es fácil exigir que se cumplan las condiciones para ser pseudoprimo en una base dada.

 

Public Function espseudo(m, b) As Boolean

If Not esprimo(m) And mcd(m, b) = 1 And restopot(b, m - 1, m) = 1 Then espseudo = True Else espseudo = False

End Function

Nos limitamos a exigir que

  • ·       Sea compuesto
  • ·       Primo con la base
  • ·       El resto potencial bm-1 respecto a m sea 1

Con esta función y un bucle de búsqueda podemos reproducir muchas sucesiones de pseudoprimos ya publicadas en OEIS. Por ejemplo, para b=23 obtenemos esta lista:

Pseudoprimos en base 23

22, 33, 91, 154, 165, 169, 265, 341, 385, 451, 481,…

La puedes comprobar en http://oeis.org/A020151

En base 11

Obtenemos: 10, 15, 70, 133, 190, 259, 305, 481, 645, 703, 793, 1105, 1330, 1729, 2047, 2257

(Ver http://oeis.org/A020139)

 

Versión en PARI

Si deseas estudiar números mayores contando con la mayor velocidad de proceso de PARI, puedes usar este código debidamente adaptado a tus datos (está construido para base 23 y búsqueda hasta el 4000):

rpm(b,p,n)={my(r,m,i);r=b%n;m=1;for(i=1,p,m=(m*r)%n);m}

espseudo(m,b)=!isprime(m)&&gcd(m,b)==1&&rpm(b,m-1,m)==1

for(k=2,4000,if(espseudo(k,23),print1(k,", ")))

Lo hemos adaptado a base 17 y cota 20000, obteniendo:

4, 8, 9, 16, 45, 91, 145, 261, 781, 1111, 1228, 1305, 1729, 1885, 2149, 2821, 3991, 4005, 4033, 4187, 4912, 5365, 5662, 5833, 6601, 6697, 7171, 8481, 8911, 10585, 11476, 12403, 12673, 13333, 13833, 15805, 15841, 16705, 19345, 19729,…

Coinciden con los pseudoprimos publicados en http://oeis.org/A020145

 

Números de Carmichael

Si un número es pseudoprimo con base todos los números coprimos con él, se llama “de Carmichel”.

Los primeros los tienes en https://oeis.org/A002997:

561, 1105, 1729, 2465, 2821, 6601, 8911, 10585, 15841, 29341, 41041, 46657, 52633,…

Bastará recorrer los números coprimos con uno de ellos y comprobar que es pseudoprimo con todos ellos.

Hay criterios más sencillos, que puedes consultar en

https://en.wikipedia.org/wiki/Carmichael_number.

 

Números de Sarrus o Poulet

Estos son los pseudoprimos en base 2, también llamados números de Sarrus, Poulet o simplemente psudoprimos, sin especificar el módulo.

El primer pseudoprimo módulo 2 es el 341, porque es compuesto (341=11*31) y cumple que

2340 =1 (mod 341)

Esta condición se verifica fácilmente, ya que 210=1024=3*341+1 presenta resto 1 respecto al módulo 341, por lo que todas sus potencias, entre ellas 2340 también tendrán ese mismo resto.

El segundo pseudoprimo módulo 2 es 561, que es compuesto (561=3*11*17) y se verifica que

2560 =1 (mod 561)

La sucesión de números de Poulet la tienes en http://oeis.org/A001567

341, 561, 645, 1105, 1387, 1729, 1905, 2047, 2465, 2701, 2821, 3277, 4033, 4369, 4371, 4681, 5461, 6601, 7957, 8321, 8481, 8911, 10261, 10585, 11305, 12801, 13741, 13747, 13981, 14491, 15709, 15841, 16705, 18705, 18721, 19951, 23001, 23377, 25761, 29341...


Aquí nos hemos limitado a presentar conceptos básicos y facilitar la búsqueda de pseudoprimos. Se podría extender más su estudio, pero superaría los objetivos de este blog.

 

lunes, 8 de noviembre de 2021

Números de Hogben

La elección de temas que efectúo para este blog tiene a veces carácter azaroso. Dentro de mis publicaciones en Twitter (@connumeros) descubrí que el número 1723 equivale a la suma de dos números triangulares de órdenes 40 y 42 respectivamente. Me gustó la idea y emprendí un estudio algebraico del tema:

Sean los órdenes k y k+2, con N como suma de dos triangulares. Tendremos:

 k(k+1)/2+(k+2)(k+3)/2=N

k(k+1)+(k+2)(k+3)=2N

K2+k+k2+5k=2N-6

2k2+6k=2N-6

4k2+12k=4N-12

(2k+3)2=4N-3

Esta identidad me llevó a buscar los números N en los que 4N-3 es un cuadrado, para después, posteriormente despejar el valor de k.

Emprendí la búsqueda y obtuve este listado:

Cuando obtengo un resultado así (podía haber comenzado con los valores de k), suelo buscarlo en la página OEIS (http://oeis.org/) y así fue como llegue a los números de Hogben (http://oeis.org/A002061), que no había tratado en este blog. Decidí cambiar mis planteamientos iniciales para dedicarme a estudiar esos números con mis herramientas usuales. Como dan lugar a muchas curiosidades, y están todas muy bien desarrolladas en distintas páginas, iré enlazándolas cuando crea que no puedo aportar nada nuevo.

Números de Hogben

Podemos definirlos como aquellos que son suma de dos número triangulares cuyos órdenes se diferencian en dos unidades, pero también vemos en la tabla que H(k)=k2-k+1, como por ejemplo H(5)=25-5+1=21, y H(7)=49-7+1=43.

Si despejo N en una igualdad anterior, me queda:

(2k+3)2=4N-3; 4N=4k2+12k+9+3; N=k2+3k+3

Puedo expresar N en función de k+2:

N=k2+3k+3=(k+2)2-(k+2)+1

Para que coincida esta expresión con la generación de la tabla basta elegir k como el índice mayor de los dos triangulares que se suman, es decir, k+2, y así se establece la coincidencia de métodos.

N= k2-k+1

Esta es la definición que se usa en http://oeis.org/A002061. Hay que recordar que en OEIS se prefiere iniciar las sucesiones con índice 0:

A002061                            Central polygonal numbers: a(n) = n^2 - n + 1.

1, 1, 3, 7, 13, 21, 31, 43, 57, 73, 91, 111, 133, 157, 183, 211, 241, 273, 307, 343, 381, 421, 463, 507, 553, 601, 651, 703, 757, 813, 871, 931, 993, 1057, 1123, 1191, 1261, 1333, 1407, 1483, 1561, 1641, 1723, 1807, 1893, 1981, 2071, 2163, 2257, 2353, 2451, 2551, 2653

Estos números, rotulados como “poligonales centrales” son los números de Hogben.

Si situamos los números naturales en espiral, los de Hogben ocupan los extremos de la diagonal principal, tal como podemos observar en la tabla creada con hoja de cálculo:


La razón estriba en que la diferencia entre dos números de Hogben consecutivos es

H(n+1)-H(n)=(n+1)2-n-1+1-n2+n-1=2n

Vimos más arriba que H(5)=21, luego su diferencia con el siguiente será 2*5=10, y en la espiral vemos que se necesitan diez pasos para ir de 21 a 31. Como el número de pasos va creciendo de 2 en 2 y el incremento H(n+1)-H(n) también, se dará esa coincidencia en todos los casos.

La anterior fórmula se puede interpretar como una recursión:

H(n+1)=H(n)+2n

Por ejemplo, 13 es el número de Hogben de índice 4, luego el siguiente será 13+2*4=21, como era de esperar.

Con nuestra herramienta para prolongar recurrencias podemos buscar una de tipo homogéneo, y, en efecto, es muy simple:

H(n+3)=3*H(n+2)-3*H(n+1)+H(n)

(http://www.hojamat.es/blog/ecurrecurre.xlsm)

Es así por ser un polinomio de segundo grado, y con ellos funciona esta recurrencia siempre. Lo puedes comprobar con esta captura de pantalla de la calculadora Wiris (https://calcme.com/a)

Se ha desarrollado la suma de la recurrencia y el resultado esperado, obteniendo el mismo resultado.

Dados tres términos consecutivos, como 31, 43, 57, se cumple que el siguiente, 73, se puede encontrar de la forma 3*57-3*43+31, y así es, porque el resultado es 73.

En la entrada de blog http://voodooguru23.blogspot.com/2018/11/hogben-numbers.html puedes consultar algunas propiedades interesantes de estos números. Están bien desarrolladas y sería inútil repetirlas aquí.

Una interpretación sencilla de estos números es que n2-n+1 equivale a n(n-1)+1, es decir, a un número oblongo (y por tanto rectangular) al que le añadimos una unidad. Lo hemos representado así:


En la siguiente página se intenta explicar por qué Sloane y Plouffe llamaron a estos números “poligonales centrales”. Es interesante su lectura.

http://mrob.com/pub/seq/a002061.html

 

Cuatro propiedades aritméticas

(1) Según afirma Amarnath Murthy en la página de OEIS enlazada, el número de Hogben H(n) se puede interpretar como el término n de una progresión de diferencia n que comienza en 1. En efecto:

N=1: D=1: H(n)=1

N=2, D=2: 1, 3

N=3, D=3: 1, 4, 7

N=4, D=4: 1, 5, 9, 13

Vemos que todas las progresiones así construidas finalizan en un número de Hogben.

Esto es ningún misterio. Según la teoría de las progresiones tendremos:

H(n)=H(1)+D*(n-1)=1+n(n-1)=n2-n+1, que es la fórmula de estos números.

(2) Los números de Hogben son los residuos de n3 respecto a n2+1

Con la función RESIDUO de Excel y Calc es fácil comprobarlo:


Algebraicamente también es fácil, porque n3=(n-1)*(n2+1)+n2-n+1 con lo que el residuo es

n2-n+1=H(n)

(3) Los números de Hogben H(n) se representan como 111 en la base (n-1)

Por ejemplo, 7(10 = 111(2,  13(10=111(3,  21(10=111(4

La razón es que H(n+1)=(n+1)2-(n+1)+1 por definición, y simplificando queda n2+n+1, lo que significa 111(n.

 

(4) Si recordamos el cociente entre una suma de potencias y la suma de sus bases, obtendremos un sencillo resultado:

Así que basta dividir el cubo de n3+1 entre n+1 para obtener H(n):

H(4)=(64+1)/(4+1)=13

H(7)=(343+1)/(7+1)=344/8=43

 

 

 

 

jueves, 28 de octubre de 2021

Alternativa a Faulhaber

 En muchas ocasiones puede interesar sumar las primeras potencias de los números naturales. Están publicados todos los casos populares, como sumas de cuadrados o de cubos, y existe una fórmula, atribuida a Faulhaber, que nos da el resultado para cualquier exponente. En el siguiente recorte de Wikipedia puedes estudiarla.

https://es.wikipedia.org/wiki/F%C3%B3rmula_de_Faulhaber

El problema que tiene esta fórmula para un uso elemental es que requiere conocer los números de Bernouilli.

El procedimiento que explicaremos a continuación es una alternativa para encontrar el valor de la suma de una sucesión de potencias o expresiones polinómicas con Excel o Calc. Se debe tomar como un simple entretenimiento, aunque en algunas situaciones puede resultar útil.

Un ejemplo: Cuadrados de oblongos:

Explicamos el procedimiento con un ejemplo, como sería encontrar una fórmula para la suma de los cuadrados de los primeros oblongos, es decir de la expresión n2(n+1)2.

A) Creamos la sucesión:

Con las hojas de cálculo es muy fácil encontrar las primeras sumas de cualquier sucesión. En este caso hemos ido creando columnas para N(N+1), que son los oblongos, sus cuadrados N2(N+1)2 y sus sumas sucesivas.



Con esto ya sabemos que la sucesión 4, 40, 184, 584, 1484, 3248, 6384,…es la que requiere una fórmula similar a las de Faulhaber. Para continuar debemos basarnos en dos conjeturas:

1) La fórmula buscada creemos que será de tipo polinómico.

2) Intuiremos de alguna forma qué grado puede tener ese polinomio. Esta segunda no es tan importante, pero nos ayudará en el siguiente paso.

B) Aplicamos la interpolación de Newton:

La búsqueda de una fórmula polinómica que resuma un conjunto de valores es una interpolación. Disponemos de una hoja de cálculo que encuentra esa fórmula para los valores 1, 2, 3, 4,…mediante la interpolación de Newton:

http://www.hojamat.es/sindecimales/aritmetica/herramientas/herrarit.htm#newton

(Ver https://es.wikipedia.org/wiki/Interpolaci%C3%B3n_polin%C3%B3mica_de_Newton)

Este método se adapta bien a la estructura de Excel y Calc. En nuestra hoja basta escribir los primeros términos y observar las diferencias que se producen. Conviene usar todos los que entren en el esquema (máximo 7). Si se conoce el grado del polinomio, se pueden usar menos. Esta sería la situación para el caso de cuadrados de oblongos:


Observamos que la diferencia sexta ya es 0, con lo que el grado del polinomio será cinco, como se ve en los coeficientes de abajo, que son seis.

Estos coeficientes actúan sobre los polinomios 1, (x-1), (x-1)(x-2), (x-1)(x-2)(x-3),…y esa es la mayor dificultad de esta interpolación, porque el resultado en este caso sería

4+36*(x-1)+54*(x-1)*(x-2)+74/3*(x-1)*(x-2)*(x-3)+4*(x-1)*(x-2)*(x-3)*(x-4)+1/5*(x-1)*(x-2)*(x-3)*(x-4)*(x-5)

(Ya se han simplificado los coeficientes)

C) Desarrollamos el polinomio interpolador:

Este resultado podría ser descorazonador, pero para su simplificación contamos con los programas CAS ((Computer Algebra System) En este blog se suele usar la Calculadora Wiris, gratuita y extendida en la enseñanza.

https://calcme.com/a

Copiamos nuestra monstruosa fórmula en ella y pulsamos sobre el signo =

Ya hemos conseguido el objetivo: la suma de los cuadrados de los oblongos sigue la fórmula x5/5+x4+5/3x3+x2+2/15x

Sustituimos el polinomio en la tabla para comprobar



Luego la fórmula queda:

La podemos factorizar con Wiris:

Estas son las etapas del proceso. Nos basamos en Excel y Calc, en nuestra hoja de interpolación y en un CAS. En la mayoría de los casos obtendremos el polinomio adecuado. Puede que el grado requerido sea mayor, con lo que habría que ampliar el esquema de cálculo, pero ese trabajo es algo complejo.

Repetimos el trabajo con oblongos, Lo dejamos con redacción escueta:

Sumas de oblongos

Debemos buscar una fórmula para 2, 8, 20, 40, 70, 112, …

Interpolamos



Observamos que son nulas las diferencias a partir de la cuarta, luego obtendremos un polinomio de tercer grado. Sería este

2+6*(x-1)+3*(x-1)*(x-2)+1/3*(x-1)*(x-2)*(x-3)

Con wiris

Factorizando con la misma calculadora:

Luego es el doble del combinatorio C(x+2,3), como puede verse en http://oeis.org/A007290

En este caso nos hemos limitado a comprobar, porque esta suma ya está resuelta.

Como un ejemplo del uso de esta fórmula puedes distraerte con mi entrada

http://hojaynumeros.blogspot.com/2018/09/suma-de-numeros-oblongos-consecutivos.html

 

Suma de potencias cuartas

Por último, reproduciremos una de las fórmulas más conocidas de Faulhaber, la que suma potencias cuartas.

(Fuente: Wikipedia)

Seguimos los pasos sugeridos.

Construimos la sucesión:

Como sabemos que el grado de la fórmula de Faulhaber es 5, interpolaremos con al menos seis elementos.

Interpolación



A partir de los coeficientes de abajo construimos el polinomio:

1+16*(x-1)+65/2*(x-1)*(x-2)+55/3*(x-1)*(x-2)*(x-3)+7/2*(x-1)*(x-2)*(x-3)*(x-4)+1/5*(x-1)*(x-2)*(x-3)*(x-4)*(x-5)

Simplificamos con Wiris

Si reducimos todo a denominador 30, coincidirá con la fórmula de Faulhaber correspondiente.

miércoles, 20 de octubre de 2021

Regresos(1): Suma de los primeros cuadrados

Hace más de diez años publiqué en mi blog una entrada breve basada en la igualdad

12+22+32+42+52+…+232+242 = 702


http://hojaynumeros.blogspot.com/2010/01/sumas-de-los-primeros-cuadrados-o.html

Desde entonces, he usado herramientas variadas para abordar este tipo de igualdades, y, como la entrada quedó algo corta, regreso a ella. Esta operación la efectuaré en un futuro con otras entradas. Por eso llamo “Regresos” a esta serie.

Para encontrar casos similares y comprobar este, acudiremos a nuestra función ESPOTENTIPO, que devuelve la base si n es una potencia de exponente k o bien 0 si no lo es.

Public Function espotentipo(n, k)

Dim m, i, e

m = Log(n) / k ‘Calcula el logaritmo de la base

m = Int(Exp(m)) ‘Posible base

e = 0 ‘Caso en el que la base no pueda ser entera

For i = m - 1 To m + 1 ‘Para evitar redondeos, busca base entera

If i ^ k = n Then e = i

Next i

espotentipo = e

End Function


Con esta función se puede confeccionar un bucle de búsqueda similar a este:

a = 0

for i = j To l

a = a + i ^ 2

b= espotentipo(a, 2)

If b <> 0 Then msgbox(i):msgbox(b)

next i

 

Con un bucle algo más complejo hemos obtenido solo dos soluciones:

Y, en efecto, según nos recordaba Claudio Meller en un comentario: “Esta demostrado que 70^2 es el único número que es igual a la suma de los primeros cuadrados. La demostración la publicó en 1918 G.N. Watson en Messenger of Mathematics, New Series, Vol. 48, pp. 1 - 22.

No se tiene en cuenta la solución trivial de 1^2=1^2

Como estas sumas son en realidad números piramidales de cuatro lados, para índices 1 y 70 son los únicos que se pueden convertir en un cuadrado.

Equivalencias similares

Si en nuestro bucle de búsqueda cambiamos el exponente de las sumas y el del resultado, obtendremos muchas equivalencias similares.

Si hubiéramos sumado los primeros cubos en lugar de los cuadrados, hubiéramos obtenido siempre un cuadrado, porque se puede demostrar que esa suma es el cuadrado de un número triangular. Así:

1+2^3=9=3^2

1+2^3+3^3=36=6^2

1+2^3+3^3+4^3=100=10^2

No es difícil demostrarlo mediante inducción completa.

Para suma de cubos equivalente a un cubo no parece existir solución (recordemos a Fermat).

Tampoco hemos obtenido soluciones en el caso de suma de potencias cuartas equivalentes a un cuadrado.

 

Potencias quintas

La suma de potencias quintas sí da lugar a cuadrados. Para simplificar el problema, usamos la fórmula, tomada de Wikipedia, que da la suma de las primeras de estas potencias:

Esta función en PARI exige que la expresión anterior dé lugar a un cuadrado perfecto:

ok(k)=issquare((k^2*(k^2*(2*k^2+6*k+5)-1))/12)

(hemos sacado factor común dos veces)

El resultado de la búsqueda es

1, 13, 133, 1321, 13081, 129493, 1281853, 12689041, 125608561, 1243396573, 12308357173, 12308357173, 121840175161, 1206093394441,

Por usar una ecuación del tipo Pell y afines, se podía sospechar que estos valores  siguieran una recurrencia. La buscamos con nuestra hoja de cálculo ecurrecurre.xslm

(http://www.hojamat.es/blog/ecurrecurre.xlsm)

con este resultado:

Por tanto, los valores buscados v(i) cumplirán la recurrencia v(1)=1, v(2)=13, v(3)=133, v(n)=11*v(n-1)-11*v(n-2)+v(n-3)

Este procedimiento en PARI refleja esta recurrencia:

mylist(n)={my(v=List(),a=1,b=13,c=133,d);listput(v,a);listput(v,b);listput(v,c);for(i=1,n-3,d=a-11*b+11*c;a=b;b=c;c=d;listput(v,d));v}

print(mylist(20))nos devuelve el número de sumandos del tipo k^5

1, 13, 133, 1321, 13081, 129493, 1281853, 12689041, 125608561, 1243396573, 12308357173, 121840175161, 1206093394441, 11939093769253, 118184844298093, 1169909349211681, 11580908647818721, 114639177128975533, 1134810862641936613, 11233469449290390601

Esta sucesión está publicada en http://oeis.org/A031138 por Ignacio Larrosa Cañestro. Nuestro trabajo anterior se organizó con otros objetivos y, al dar protagonismo al número de sumandos, vimos con satisfacción la coincidencia con el profesor Larrosa.

Triangulares

En la entrada antigua que revisitamos, se proponía una cuestión similar para triangulares. Se sugería la existencia de pocas soluciones y, en efecto, solo una suma de los primeros triangulares es triangular para estos números de sumandos: 0, 1, 3, 8, 20, 34

(http://oeis.org/A224421)

Para comprobarlo nos sirve el mismo método que con las potencias quintas. Basta ver que la suma de los primeros triangulares tiene como fórmula n(n+1)(n+2)/6, y la prueba para saber si un número T es triangular consiste en que sea cuadrada la expresión 8T+1. Reuniendo las dos expresiones nos resulta el código en PARI siguiente:

ok(k)=issquare(8*k*(k+1)*(k+2)/6+1)

for(i=1,1000,if(ok(i),print(i)))

Ejecutándolo, nos resultan los valores ya reseñados:


Según nuestra publicación sobre números piramidales, estas sumas serán tetraedros.

(http://www.hojamat.es/publicaciones/piramidal.pdf)

Los mismos índices nos sirven para oblongos, porque son doble de los triangulares.

lunes, 11 de octubre de 2021

Detección de progresiones aritméticas

Es bastante frecuente que tres elementos de una misma sucesión o del mismo tipo presenten una progresión aritmética, es decir, que tengan la forma (n-k, n, n+k). Un ejemplo de esto son las ternas de números primos en progresión:

 3  5  7

 3  7  11

 5  11  17

 7  13  19

 11  17  23

 7  19  31

 17  23  29

 17  29  41

 19  31  43

 31  37  43

 29  41  53

En mis sucesiones http://oeis.org/A292313, http://oeis.org/A292309, http://oeis.org/A292314 y otras se hace referencia a este tipo de ternas, que son admitidas por casi todos los tipos de números más populares.

La detección de estas ternas no ofrece problemas de diseño de un algoritmo. Si fijamos la atención en el término central n, es claro que n-k pertenecerá al rango (1, n-1). Por tanto, bastará recorrerlo y, para cada número del mismo tipo que n, buscar si n+k también coincide con ellos en la misma característica o propiedad, que en el caso anterior era la de ser primos.

Las ternas anteriores de primos se pueden detectar con la siguiente función de Excel y Calc:

function hayprog$(n) ‘Devuelve un string con la terna, o bien una cadena vacía

dim i,k

dim s$

 

if not esprimo(n) then hayprog="":exit function ‘Si el número no es primo, salimos.

s=""

k=0

for i=1 to n-1 ‘La variable i recorre el rango (1,n)

if esprimo(i) then ‘Si es primo, seguimos

k=n-i ‘Si n+k también es primo, hemos llegado a una terna

if esprimo(n+k) then s=s+” # “+str$(n-k)+" "+str$(n)+" "+str$(n+k)

end if

next i

hayprog=s

end function

Con PARI se puede usar este mismo algoritmo. Al ser un lenguaje más orientado a números, usaremos como respuesta de la función ESPROG el término central.

esprog(n)={my(s=0,k=0,i);if(isprime(n),for(i=1,n-1,if(isprime(i),k=n-i;if(isprime(n+k),s=1))));s}

for(i=1,100,if(esprog(i),print(i)))

 Si lo ejecutas en https://pari.math.u-bordeaux.fr/gp.html, te devolverá los términos primos centrales:

 

El uso del bucle FOR-NEXT se justifica porque, en otros casos que veremos más adelante, pueden existir dos soluciones. Si no, usaríamos WHILE, que se puede detener antes.

Ternas de cuadrados

Las ideas anteriores las podemos aplicar a muchos tipos de números. Comenzamos por los cuadrados. Para ello, sustituimos la función ESPRIMO por ESCUAD  en Excel y Calc, y  en PARI, isprime por issquare. Puedes buscar la función ESCUAD en este mismo blog. El resultado sería el siguiente:

   #  1  25  49

 #  4  100  196

 #  49  169  289

 #  9  225  441

 #  49  289  529

 #  16  400  784

 #  25  625  1225 #  289  625  961

 #  196  676  1156

 #  1  841  1681

 #  36  900  1764

 #  196  1156  2116

 #  49  1225  2401

 #  529  1369  2209

 #  441  1521  2601

 #  64  1600  3136

 #  961  1681  2401

 Vemos que el 625 es centro de dos ternas distintas. Comprueba que todas las ternas presentan una progresión aritmética.

Los términos centrales están publicados en OEIS:

A198385         Second of a triple of squares in arithmetic progression.

25, 100, 169, 225, 289, 400, 625, 676, 625, 841, 900, 1156, 1369, 1225, 1681, 1521, 1600, 2500, 2025, 2704, 2601, 2500, 3721, 2809, 3025, 4225, 3364, 3600, 4225, 4225, 4225, 4624, 5625, 5476, 7225, 4900, 6724, 6084, 5329, 5625, 6400, 7225, 7225, 7225, 7921

Las primeras diferencias de estas progresiones son: 24, 96, 120, 216, 240, 384, 336, 480, 840, 864, 960, 1176 y 840, y todas son múltiplos de 24.

Las sumas de los tres componentes de la terna las publiqué en http://oeis.org/A292313. Coinciden, como es evidente con el triple del término central.

A292313         Numbers that are the sum of three squares in arithmetic progression.

            75, 300, 507, 675, 867, 1200, 1875, 2028, 2523, 2700, 3468, 3675, 4107, 4563, 4800, 5043, 6075, 7500, 7803, 8112, 8427, 9075, 10092, 10800, 11163, 12675, 13872, 14700, 15987, 16428, 16875, 18252, 19200, 20172, 21675, 22707, 23763, 24300, 24843, 27075, 28227, 30000, 30603


Relación entre bases

Una búsqueda se debe enriquecer siempre con ideas teóricas o algebraicas. En este caso, no es difícil relacionar las bases.

Podemos representar la terna como (n-r)², n² y (n+s)². Con ello, la igualdad de diferencias será:

n²-(n-r)²=(n+s)²-n²

Simplificando:

s²+2ns+r²-2nr=0

Es una ecuación de segundo grado en la variable s en la que el discriminante es n²-r²+2nr y ha de ser cuadrado. Esto nos da una posibilidad de crear otra función en la que los resultados sean las bases de los cuadrados. Puede ser esta:

function hayprog2$(n)

dim i,k,q

dim s$

s=""

k=0

for i=1 to n-1

q=n^2-i^2+2*n*i ‘Se exige que el discriminante sea cuadrado

if escuad(q) then

k=sqr(q)-n ‘Las diferencias serán i y k

s=s+” # “+str$(n-i)+" "+str$(n)+" "+str$(n+k)

end if

next i

hayprog2=s

end function

Efectivamente, los números que producen resultados válidos en esta función son las raíces cuadradas de los que obtuvimos más arriba,

 #  1  5  7

 #  2  10  14

 #  7  13  17

 #  3  15  21

 #  7  17  23

 #  4  20  28

 #  17  25  31 #  5  25  35

 #  14  26  34

 #  1  29  41

 #  6  30  42

 #  14  34  46

 #  7  35  49

 #  23  37  47

 #  21  39  51

 #  8  40  56

 

Protagonismo para las diferencias

Podemos despejar n en la expresión s²+2ns+r²-2nr=0:

n=(s²+r²)/(2(r-s))

Si n es entero, el par r, s será válido para cumplir la condición de progresión. Este punto de vista ha resultado muy eficaz, porque para cada valor de r (que será par por ser igual a una diferencia de cuadrados y mayor que s) se obtienen varios valores posibles de n. Son los mismos términos centrales en las ternas de bases, pero agrupados por conjuntos. Hemos usado la función:

function hayprog3$(n)

dim i,q

dim s$

s=""

for i=1 to n-1

q=(n^2+i^2)/(2*(n-i)) ‘La variable q representa la base central

if q=int(q) then s=s+" "+str$(q) ‘Se añaden todas las soluciones para una diferencia dada

next i

hayprog3=s

end function

Si se organiza una búsqueda con esta función, obtendremos los valores de la base central para cada diferencia:

 


 Equivalencia entre dos sumas de impares

 Si recordamos que un cuadrado es una suma de los primeros impares, la diferencia entre dos de ellos también será una suma, aunque no comenzará con el 1. Entonces, las ternas que estamos investigando se traducirán en equivalencia entre dos sumas de impares consecutivos. Así, la terna 1, 25, 49 se puede representar como

3+5+7+9=11+13

 

Ternas de triangulares en progresión

Si sustituimos la función ESCUAD por ESTRIANGULAR (está publicada en el blog, y basta exigir que 8n+1 sea cuadrado), obtendremos ternas del mismo tipo, pero para triangulares. Aquí tenemos una pequeña dificultad si consultamos OEIS, y es que se considera el 0 como triangular, siguiendo la política de esa página. Así, en el siguiente listado publicado, no entrarían, por ejemplo, 3 y 105 si no admitiéramos 0 como triangular. En los cuadrados no existe ese problema, porque uno de ellos no puede ser el doble de otro, pero en los triangulares sí (ver http://oeis.org/A075528).

3          #  0  3  6

21        #  6  21  36

28        #  1  28  55

36        #  6  36  66

78        #  3  78  153 #  36  78  120

105      #  0  105  210

153      #  6  153  300

171      #  66  171  276

190      #  55  190  325

210      #  120  210  300

253      #  10  253  496

325      #  55  325  595

351      #  36  351  666

378      #  15  378  741

 

A292310

Triangular numbers that are equidistant from two other triangular numbers.

3, 21, 28, 36, 78, 105, 153, 171, 190, 210, 253, 325, 351, 378, 465, 528, 666, 703, 903, 946, 990, 1035, 1128, 1176, 1275, 1378, 1485, 1540, 1596, 1653, 1711, 1770, 1891, 1953, 2278, 2346, 2556, 2628, 2775, 2926, 3003, 3081, 3160, 3403, 3570, 3741, 3828, 4095, 4186, 4278, 4371, 4656

Relación entre órdenes

Repitiendo los pasos de los cuadrados, tendremos:

(n+s)(n+s+1)+(n-r)(n-r+1)=2n(n+1)

ns+n+ns+s²+s-rn+n-rn+r²-r=2n

2ns+s²+s-2rn+r²-r=0

s²+(2n+1)s-(2n+1)r+r²=0

El discriminante para s en esa ecuación será

(2n+1)²+4(2n+1)r-4r²

Si es un cuadrado se tendrá:

q²=(2n+1+2r)²-8r²

s=(q-2n-1)/2

Por  tanto, en hayprog2 habrá que introducir este nuevo discriminante:

function hayprog2$(n)

dim i,k,q

dim s$

s=""

k=0

for i=0 to n-1

q=(2*n+1+2*i)^2-8*i^2

if escuad(q) then

k=(sqr(q)-2*n-1)/2

if k>0 then s=s+" # "+str$(n-i)+" "+str$(n)+" "+str$(n+k)

end if

next i

hayprog2=s

end function

El resultado de los primeros órdenes de los triángulos es:

6          #  3  6  8

7          #  1  7  10

8          #  3  8  11

12        #  8  12  15 #  2  12  17

17        #  3  17  24

18        #  11  18  23

19        #  10  19  25

20        #  15  20  24

22        #  4  22  31

25        #  10  25  34

26        #  8  26  36

27        #  5  27  38

30        #  24  30  35

32        #  23  32  39 #  17  32  42 #  11  32  44 #  6  32  45

36        #  3  36  51

Aparecen varios casos múltiples para un mismo orden central. Sin tenerlos en cuenta, con ellos se reconstruyen las ternas de más arriba:

 


Equivalencia entre sumas de consecutivos

Al igual que nos ocurrió con los cuadrados, al ser los triangulares suma de números consecutivos, cada progresión aritmética de triangulares se traducirá en una equivalencia de sumas de ese tipo. Por ejemplo, la terna 6, 36, 66 se traduce en 4+5+6+7+8=9+10+11, ya que ambos suman 30, que es la diferencia.


Ternas de oblongos

Cada terna de triangulares se convierte en otra de oblongos, ya que estos son el doble de los primeros. Cada triangular n(n+1)/2 dará lugar al oblongo n(n+1). No tiene mayor interés.

Semiprimos

Todos los semiprimos, salvo 4 y 6, pueden ser términos centrales en ternas de semiprimos en progresión aritmética. Hay estudios sobre esto en Xianmeng Meng, On sums of three integers with a fixed number of prime factors https://www.sciencedirect.com/science/article/pii/S0022314X0500106X?via%3Dihub

 Aquí figuran las ternas que admiten los primeros semiprimos:

9          1 :   #  4,  9,  14

10        1 :   #  6,  10,  14

14        1 :   #  6,  14,  22

15        2 :   #  4,  15,  26  #  9,  15,  21

21        2 :   #  4,  21,  38  #  9,  21,  33

22        3 :   #  6,  22,  38  #  9,  22,  35  #  10,  22,  34

25        2 :   #  4,  25,  46  #  15,  25,  35

26        2 :   #  6,  26,  46  #  14,  26,  38

33        3 :   #  4,  33,  62  #  9,  33,  57  #  15,  33,  51

34        4 :   #  6,  34,  62  #  10,  34,  58  #  22,  34,  46  #  33,  34,  35

35        2 :   #  15,  35,  55  #  21,  35,  49

38        3 :   #  14,  38,  62  #  21,  38,  55  #  25,  38,  51

39        3 :   #  4,  39,  74  #  9,  39,  69  #  21,  39,  57

46        5 :   #  6,  46,  86  #  10,  46,  82  #  15,  46,  77  #  34,  46,  58  #  35,  46,  57

49        3 :   #  4,  49,  94  #  21,  49,  77  #  33,  49,  65

 

Vemos que faltan 4 y 6, y que el resto admite una o más ternas de las pedidas. Por ejemplo, 46 admite 5 soluciones.

Podemos modificar las funciones para que solo nos ofrezcan el número de soluciones. Si exigimos dos, además del 4 y 6, hay otros semiprimos que no admiten soluciones dobles. En el listado se identifican 9, 10 y 14, y no hemos encontrado más. Los siguientes admiten al menos dos soluciones.

Si exigimos que al menos presenten tres soluciones, las excepciones se extienden a esta lista:

4, 6, 9, 10, 14, 15, 21, 25, 26, 35 y 57

Para cuatro sigue el tope de 57 (sólo hemos investigado hasta el 500), pero se incorporan 22, 33, 38, 39, y 49. Con  exigencia de cinco llegaríamos a 87. Lo dejamos ahí sin formular ninguna conjetura. El autor, a punto de cumplir 80 años, no se ve con ánimo para estudiar documentos como el reseñado de Meng.

Con estas consideraciones, se pueden emprender otras búsquedas, que dejamos a quienes nos siguen.