viernes, 17 de marzo de 2023

Números primos del tipo HP (homeprimes)

Como es costumbre en este blog, se extraen temas de los cálculos que publicamos en Twitter @connumeros. El día 31/01/2023, estudiando el número 31123 vimos que OEIS lo calificaba como homeprime con cuatro orígenes. Mantengo esta denominación en inglés porque no he encontrado traducción adecuada. Lo que sigue no tiene un gran interés matemático, pero supone un cierto esfuerzo en la búsqueda de algoritmos y su codificación.

La idea para estos números es la siguiente: Dado un número compuesto cualquiera, como por ejemplo, 42, lo descomponemos en factores primos y los concatenamos de menor a mayor para formar otro número (en base 10). En este caso, 42=2*3*7, luego concatenamos y llegamos a 237. Si existen primos repetidos, no usamos exponentes, sino que los mantenemos repetidos. Por ejemplo, 24=23*3 lo convertimos en 2223. Si el resultado es compuesto, como es el caso de 237=3*79, lo convertimos en 379. Así seguimos hasta llegar a un primo. Este sería el caso de 379, luego sería home prime, y lo podemos representar como HP(42). Un número primo p cumplirá HP(p)=p.

Esto es un entretenimiento sin más trascendencia, publicado por primera vez por Jeffrey Heleen en 1990. Al experimentar con esta idea se descubrió que era un algoritmo que podía dar más juego de lo esperado. Por ejemplo, la función HP no es biunívoca. Puedes comprobar que 379 es imagen de tres números compuestos distintos: 42, 74, 237 y el mismo 379. Esto es lo que parece ocurrir con el número 31123, que posee cuatro oígenes. Lo iremos descubriendo paso a paso.

Algoritmo básico

Podemos idear una función para la operación básica de concatenar factores, y luego pasaremos a reiterarla.

Para hoja de cálculo

La hoja más usada, Excel, presenta el problema de que al representar un número mediante texto le añade un espacio en blanco. Por eso solemos usar en este blog la función ajusta, que le elimina ese carácter si ha lugar. La hemos usado varias veces aquí.

Function ajusta$(a)

Dim d$

 

d$ = Str$(a) ‘Convierte el número en texto

While Left$(d$, 1) = " " ‘Va eliminando espacios en blanco

d$ = Right$(d$, Len(d$) - 1)

Wend

ajusta$ = d$

End Function

Con ella podemos concatenar caracteres sin problema. A continuación vemos la operación básica de concatenar factores primos:

Function concfactores(n)

Dim f, a

Dim s$

s = "" ‘Se inicia una cadena de texto

a = n 'Copia el valor de n

f = 2 'Inicia el listado de primos

While f <= a 'Recorre los primos posibles

While a / f = a \ f

a = a / f: s = s + ajusta(f) ‘Si es factor, concatena

Wend

If f = 2 Then f = 3 Else f = f + 2 ‘Avanza a otro primo

Wend

concfactores = Val(s) ‘Convierte la concatenación en número

End Function

Podemos aplicar esta función a cualquiera de nuestros ejemplos, 42, 237, 74 o 379 para comprobar su funcionamiento. Por ejemplo, CONCFACTORES(144)= 222233.

Es fácil ver que esta operación no disminuye el valor de un número, por lo que si reiteramos, siempre nos encontraremos con una sucesión no decreciente.

Charles R Greathouse IV propone en OEIS un procedimiento PARI similar, pero que se aprovecha de que este lenguaje ya suministra el vector factor con los factores primos y sus exponentes, y solo hay que extraerlos y añadirlos a un Str. El final, con eval(s) lo convierte en número.

step(n)=my(f=factor(n), s=""); for(i=1, #f~, for(j=1, f[i, 2], s=Str(s, f[i, 1]))); eval(s)

Si lo que deseamos es reproducir la función concfactores podemos usar este otro código, que no se apoya en la existencia del vector factor:

step(p)={my(s="",a=p,f=2);while(f<=a,while(a%f==0,a=a/f;s=Str(s,f));f=f+1+(f<>2));eval(s)}

print(step(144))

Está preparado para concatenar los factores de 144, con el resultado de 222233.

Búsqueda del HP(p)

Con esta función ya podemos reiterar hasta llegar al primer primo, el homeprime:

Function hp(n)

Dim p, q, r

 

p = n ‘Copia n

q = 1 ‘Inicia variable auxiliar

 

Do ‘Bucle de búsqueda

r = p

 p = concfactores(p) ‘Da un paso de concatenación

 q = p

Loop Until r = q ‘Si son iguales, es que es primo. Final.

hp = p

End Function

 

Esta función es útil si las iteraciones no llegan muy lejos, pues se entra en la zona en la que las hojas de cálculo pierden exactitud. Probamos con algunos ejemplos:

Observamos que, mientras los primeros llegan al homeprime sin problemas, el 222 sobrepasa la posibilidades de Excel. Podemos seguir  sus trayectorias paso a paso:


Los primeros se van estabilizando hasta llegar a un número primo, pero el 222 sigue buscando hasta que sobrepasa la capacidad de cálculo.

Podemos traducir el algoritmo a PARI, que admite todas las cifras:

step(p)={my(s="",a=p,f=2);while(f<=a,while(a%f==0,a=a/f;s=Str(s,f));f=f+1+(f<>2));eval(s)}

hp(n)={my(p=n,q=1);until(r==p,r=p;p=step(p);q=p);p}

print(hp(222))

 

Se conjetura que cada compuesto posee un homeprime, pero en algunos, como el 49, no se conoce el final del proceso. Tampoco se ha logrado en 77, 49, 146, 246, 312, 320…En nuestro equipo ha resultado difícil seguir el proceso para 222. Se ha llegado a estos pasos:

222, 2337, 31941, 33371313, 311123771, 7149317941, 22931219729, 112084656339, 3347911118189, 11613496501723, 97130517917327, …

El problema reside en la factorización, que puede llegar a ser inabordable.

Búsqueda de los orígenes

Nos queda un último trabajo, y es buscar los compuestos que terminan en un número primo dado, como el 31123 del primer ejemplo. Podíamos recorrer los compuestos menores que el primo, aplicarles la función hp(n) y comprobar si coincide con el primo estudiado, pero, como vimos en el párrafo anterior, el proceso se puede bloquear al llegar a ciertas factorizaciones.

Para evitar estos bloqueos, reproduciremos los pasos, pero parando el proceso si se sobrepasa el número primo dado. Con la siguiente función se resuelve el problema, aunque aumentamos algo la complejidad:

Function origenhp$(n)

Dim i, j, m

Dim s$

 

s = "" ‘Contenedor de las soluciones

If esprimo(n) Then ‘Solo actúa sobre primos

For i = 4 To n – 1 ‘Recorre los posibles compuestos

m = 0 ‘Indicador de solución

j = concfactores(i) ‘Damos pasos hacia HP(i)

While j <= n And m = 0 ‘Nos detenemos al llegar a n

If j = n Then s = s + Str$(i) + ", ": m = 1 ‘Hay un origen

If esprimo(j) Then m = 1 ‘Se llega a un primo menor que n

If m = 0 Then j = concfactores(j) ‘Si no es solución, se avanza

Wend

Next i

End If

origenhp = s

End Function

 

Con este procedimiento encontraremos los orígenes de un presunto homeprime. Lo podemos aplicar a nuestro ejemplo de 379, y resultan los orígenes conocidos, a los que hay que añadir él mismo:

Queda comprobado su funcionamiento. Ahora hay que volver al principio, y es ver qué tres orígenes tiene el número 31123. Tardará un poco en dar la solución, que es:


Hemos resuleto el problema, los cuatro orígenes son 413,
  759,  3369, 31123. En la cuarta fila se compruebas los tres primeros con la función HP. En la siguiente tabla vemos los pasos necesarios para llegar a 31123.


Para emprender otras vbúsquedas posibles, insertamos el código PARI que traduce este procedimiento:

step(p)={my(s="",a=p,f=2);while(f<=a,while(a%f==0,a=a/f;s=Str(s,f));f=f+1+(f<>2));eval(s)}

origenhp(n)={my(i,j,m,s="");if(isprime(n),for(i=4,n-1,m=0;j=step(i);while(j<=n&&m==0,if(j==n,s=Str(s,", ",i);m=1);if(isprime(j),m=1);if(m==0,j=step(j)))));s}

print(origenhp(31123))

 


Esto ha sido una práctica sobre algoritmos, porque la cuestión carece de verdadero interés matemático, pero como tantas otras, es útil como pasatiempo y para pulir códigos. En nuestro caso, nos resultó interesante obviar las limitaciones de las hojas de cálculo en el tratamiento de números naturales grandes. Se logra a medias, porque con instrumentos más potentes siguen existiendo lagunas también.

miércoles, 8 de marzo de 2023

Tríos de cuadrados y de cubos

Releyendo el libro “Las Matemáticas de OZ” de Clifford A. Pickover he encontrado este acertijo: “Encontrar tres números diferentes cuya suma de cubos sea un cuadrado y la de sus cuadrados sea un cubo”. He visto que es una buena razón para practicar algoritmos.

Los tres números iguales

Sin la exigencia de que sean diferentes obtendríamos rápidamente el trío (3, 3, 3), pues 32+32+32=27=93 y 33+33+33=81=92.

También es válido (192,192,192): 1922+1922+1922=483 y 1923+1923+1923=46082

En este caso de que los tres sean iguales se resuelve fácilmente por descomposición en factores primos, pues ambas sumas se reducen a 3n3=p2, 3n2=q3. Debemos buscar un número tal que si e3 es el exponente de 3 en el mismo, se cumpla que 1+3e3 sea múltiplo de 2 y que 1+2e3 lo sea de 3. Claramente es válido en el 3, lo que daría la primera solución. También se cumple en todos aquellos números en los que el exponente de 3 es 1, como 192=3*26. En el resto de casos, el que 1+3e3 sea múltiplo de 2 nos obliga a que e3 sea impar, y el que 1+2e3 sea múltiplo de 3 a que e3 tenga la forma 3k+1 (es fácil razonarlo). Así que los exponentes válidos para el 3 serán 1, 7,13,19,…tipo 6k+1.

En el resto de factores primos del número no se ven afectados sus exponentes por el factor 3, luego deberán ser tales que al multiplicarlos por 3, para formar los cubos, el resultado sea par, luego serán múltiplos de 2. Igualmente, al multiplicarlos por 2, el resultado ha de ser un cubo, luego sus exponentes serán múltiplos de 3. Los únicos exponentes que cumplen esto son los múltiplos de 6, luego ya lo tenemos resuelto:

Si los tres números son iguales, el exponente de 3 ha de ser del tipo 6k+1 y los del resto de factores primos, del tipo 6k.

Hemos realizado un búsqueda con Excel, y las primeras soluciones son


Se observa que los exponentes (segundo número de cada corchete) cumplen lo establecido.

Esto nos permite encontrar más soluciones y comprobar que existen infinitas.

Los tres números diferentes

En este caso nos vemos obligados a usar algún algoritmo. No es difícil, pero sí lento. Para cada N recorremos todos los pares de números menores que N, diferentes de N y entre sí. Les aplicamos la condición de Pickover e imprimimos si es válida. Desgraciadamente, es un proceso lento, pero se consiguen resultados.

Usamos una función dependiente de N:

Function tresnumeros$(n) ’ Es tipo texto para un conjunto

Dim i, j

Dim s$

 

s = ""

For i = 2 To n – 1 ‘Primer número, que no llega a n

For j = 1 To i – 1’ Segundo número, inferior al primero

‘Aplicamos el criterio

If escuad(i ^ 3 + j ^ 3 + n ^ 3) And escubo(i ^ 2 + j ^ 2 + n ^ 2) Then s = s + " # " + Str$(n) + " " + Str$(i) + " " + Str$(j) ‘Solución

Next j

Next i

tresnumeros = s

End Function

Si no es solución, devuelve la cadena vacía “” y si lo es, un texto con los tres números.

Al ser un algoritmo con dos bucles, se tarda mucho en encontrar soluciones. Las primeras son:

A partir de la siguiente, la hoja de cálculo deja de ser fiable para números enteros.

Podemos probar una versión para PARI:

is(n)={my(i=1,j=1,m=0,v=[0,0,0]);for(i=1,n-1,m=0;for(j=1,i-1,if(ispower(i^2+j^2+n^2,3)&&issquare(i^3+j^3+n^3),m=1;v[1]=n;v[2]=i;v[3]=j;print(v))));m}

for(i=1,10000,if(is(i),print(i)))

Es más complicada de seguir, pero nos da alguna solución más en un tiempo de proceso razonable:

252, 234, 198

464, 304, 256

2060, 1854, 1030

4046, 2600, 1122

4394, 4056, 1690

Comprobamos la última solución:

43942+40562+16902=3383

43943+40563+16903= 3954602


Sin restricción de ser diferentes

En ese caso, las variables i, j del algoritmo las dejaremos recorrer todo el rango entre 1 y N. Así se obtendrán todas las soluciones posibles, en la siguiente tabla, hasta un tope de 5000:

3, 3, 3

192, 192, 192

252, 234, 198

464, 304, 256

2060, 1854, 1030

2187, 2187, 2187

4046, 2600, 1122

He probado a comparar otras potencias con un exponente mayor, pero resultan cálculos muy lentos y sin resultado interesante. Sin embargo, al introducir la potencia de exponente 1, las soluciones se han multiplicado. Por ejemplo, este listado corresponde al caso de que los cubos y también la suma con exponente 1 sumen ambas un cuadrado:

6, 2, 1

14, 9, 2

15, 13, 8

16, 14, 6

19, 9, 8

20, 10, 6

20, 17, 12

24, 8, 4

27, 19, 3

28, 22, 14

29, 15, 5

29, 19, 16

35, 25, 4

36, 17, 11

Y siguen muchos más con frecuencia similar. Un ejemplo:

27+19+3=49=72

273+193+33=1632

Con ligeros retoques en los códigos se pueden abordar otros casos similares, pero contando con un equipo que no sea muy lento en los cálculos.

lunes, 27 de febrero de 2023

Números doblemente triangulares

Se llaman así a aquellos números triangulares cuyo orden es también triangular. Los designaremos como DT. Si un número triangular de orden N se define como N(N+1)/2, en estos números, N también es triangular, por ejemplo m(m+1)/2, con lo que, sustituyendo queda:

DT(m)=(m(m+1)/2)(m(m+1)/2+1)/2=m(m+1)(m2+m+2)/8

Esta es la fórmula utilizada en su publicación en OEIS:

Como un número triangular es suma de los primeros números consecutivos, estos doblemente triangulares han de equivaler a una suma de ese tipo en el que el número de sumandos sea triangular. Esto se visualiza muy bien en el triángulo de Floyd:

1

2   3

4   5   6

7   8   9   10

11 12 13 14 15

Si se van sumando los números fila a fila nos resultarán, 1, 6, 21, 55, 120,…los doblemente triangulares.

Para generarlos con hoja de cálculo basta crear una columna con los primeros números naturales, otra paralela con los triangulares  y, por último, copiar la fórmula de la segunda en otra tercera:

La última fórmula se incluye para aclarar, pero en la hoja coincide con la segunda con órdenes distintos. Así:

Se observa que las dos columnas poseen la misma fórmula. Por eso estos números son doblemente triangulares.

Relación con números combinatorios

Como también los números triangulares de orden N equivalen al número combinatorio C(N+1,2), que cuenta el número de pares de elementos de un conjunto de cardinal N+1, sin repetición, el número doblemente triangular contará el “número de pares de pares”. Así, se puede expresar también como

En lenguaje de hoja de cálculo tendríamos:

DT(N)=COMBINAT(COMBINAT(N+1;2)+1;2)

Escribe en una hoja =COMBINAT(COMBINAT(12;2)+1;2) y te resultará 2211, el número doblemente triangular de orden 11.

Colores en un cuadrado

Esta idea de “pares de pares” la visualiza Wikipedia en las formas de colorear las diagonales de un cuadrado si se consideran iguales las que surgen de rotaciones o simetrías. En la imagen figuran los pares de colores arriba y a la izquierda, mientras los “pares de pares” figuran en el centro:

 

 

Fuente: https://en.wikipedia.org/wiki/Doubly_triangular_number

Este esquema de colores se puede reproducir con nuestra herramienta Cartesius,

(http://www.hojamat.es/sindecimales/combinatoria/herramientas/herrcomb.htm#cartesius)

si representamos las combinaciones de colores con números de dos cifras. El planteo puede ser el siguiente:

Combinamos pares de pares, representando los colores por 11, 12,…33 y exigiendo que sea creciente cada arreglo para que no se repitan los pares (de pares). El resultado es:


En la parte derecha de la hoja se reflejará el total, el número doblemente triangular 21.


En OEIS se propone esta otra fórmula con números combinatorios:

 DT(n)=3*(n+2)*(n+1)*n*(n-1)/24+n(n+1)/2=n(n+1)(n2+n+2)/8

Esta igualdad se verifica muy bien en WolframAlpha:


https://www.wolframalpha.com/

También Mitch Harris, Oct 17 2006 y Bruce J. Nicholson proponen esta otra expresión con números combinatorios:

También se puede verificar algebraicamente. Antes hemos sustituido los números combinatorios por su expresión respecto a n:

https://www.wolframalpha.com/

Aportación nuestra

Para n>=2, a(n) es la suma de dos números triangulares de esta forma:

DT(n)=T(n(n+1)/2)=T(n)+T((n^2+n-2)/2)

Esto es debido a la identidad:

n*(n+1)*(n^2+n+2)/8=n*(n+1)/2+(n^2+n-2)*(n^2+n)/8)

También la hemos verificado en https://www.wolframalpha.com/

La idea nos surgió al descubrir las coincidencias con la sucesión de números triangulares que son suma de triangulares. Puedes consultar nuestra entrada

https://hojaynumeros.blogspot.com/2021/04/sumandos-con-el-mismo-caracter-que-la.html

Así, por ejemplo, 21=6+15, 55=10+45, 120=15+105,…

En realidad, no es necesario acudir al Álgebra. La siguiente imagen representa muy bien esta descomposición:

En ella observamos que el triangular 21, de orden 6 (también triangular) se convierte en otro triangular al separarle el lado. Por tanto, 21 es la suma de dos triangulares, su lado, que es 6 y el triangular residual, 15.

Con sus fórmulas:

6*7/2=3*4/2+5*6/2

 

 

 

miércoles, 15 de febrero de 2023

Propiedades compartidas con el doble

Hace poco descubrí que el número 15561 y su doble, 31122, comparten la propiedad de ser ambos suma de dos cubos enteros positivos:

15561=17^3+22^3 y 31122=15561*2=11^3+31^3

¿Ocurrirá esta casualidad en otros números? ¿Habrá más coincidencias entre un número y su doble? Estas cuestiones las desarrollaremos hasta que la falta de interés o el espacio aconsejen parar.

Coincidencia en suma de cubos

Para encontrar números con la misma propiedad que el 15561 deberemos investigar, en primer lugar, qué números son suma de dos cubos enteros positivos. Es de esperar que sean muchos, y los encontraremos (en hoja de cálculo) con esta función:

Public Function sumadoscubos$(n) ‘Construye un texto

Dim i, r, t, w

Dim s$

s = "" ‘Si no hay solución, variable s queda vacía

r = Int(n ^ (1 / 3)) ‘Tope para la búsqueda

For i = 1 To r ‘Búsqueda del primer cubo

t = n - i ^ 3 ‘Posible segundo cubo

w = t ^ (1 / 3)

If escubo(t) And t > 0 Then s = s + Str$(i) + ", " + Str$(t ^ (1 / 3)) ‘Si es un cubo positivo, tenemos solución

Next i

sumadoscubos = s

End Function

Con ella obtenemos los primeros números que son suma de cubos:


No hemos impedido que aparezcan dos soluciones simétricas, porque eso simplifica el algoritmo.

Hemos usado nuestra función ESCUBO

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

Estos números están publicados en http://oeis.org/A003325

Si ahora exigimos que el doble de esos números también presente la misma propiedad, obtendremos este listado:

También están publicados estos números, y entre ellos figura 15561, que nos ha servido de ejemplo inicial.


En esta dirección de OEIS no se usa PARI, por lo que incluimos una propuesta:

doscubos(n)={my(i=1,t,s=0,r=truncate(n^(1/3)));while(i<=r&&s==0,t=n-i^3;if(ispower(t,3)&&t>=1,s=1);i+=1);s}
es(n)=doscubos(n)&&doscubos(2*n)
for(i=1,10^5,if(es(i),print1(i,", ")))

Si usamos la página web de PARI/GP obtendremos la misma sucesión:


Coincidencia con cuadrados de primos

Esta búsqueda es algo más complicada, porque hay que buscar dos cuadrados y además sus bases deberán ser números primos. Lo hemos intentado con esta función de VBA Basic, que determina los números que son suma de dos cuadrados de primos:

Public Function sumadoscuad_prim$(n)

Dim i, r, t, w, m

Dim s$

s = "" ‘Inicio de la solución

m = 0 ‘Inicio del contador

r = Sqr(n) ‘Tope de búsqueda

i = 2 ‘Primer primo

While i < r

t = n - i ^ 2 ‘Posible segundo cuadrado

w = Sqr(t)

If escuad(t) And esprimo(w) And i <= w Then m = m + 1: s = s + " # " + Str$(i) + ", " + Str$(w) ‘Encuentra una solución

i = primprox(i) ‘Siguiente primo

Wend

If s = "" Then s = "NO" Else s = ajusta(m) + " # " + s

sumadoscuad_prim = s

End Function


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

Si ahora añadimos la condición de que también el doble de N sea suma de dos potencias de primos, resulta que solo encontramos dos ejemplos, 29 y 845:


Por si el no encontrar más se debiera a una carencia de la hoja de cálculo, hemos traducido esta búsqueda a PARI:

doscuadprim(n)={my(i=2,t,s=0,r=sqrtint(n));while(i<=r&&s==0,t=n-i^2;if(issquare(t)&&isprime(sqrtint(t)),s=1);i=nextprime(i+1));s}

es(n)=doscuadprim(n)&&doscuadprim(2*n)

for(i=1,10^4,if(es(i),print1(i,", ")))

Hemos insertado este código en la página oficial de PARI con el mismo resultado:


Hemos probado más allá de 10^6 sin obtener más resultados.

 Coincidencia en suma de triangulares

Esta búsqueda es más fácil que la anterior. Basta sustituir en la función de cubos de los primeros párrafos ESCUBO por ESTRIANGULAR, y algún detalle más, pero no se encuentran soluciones a la cuestión propuesta entre los números


Otros ejemplos

Con sumandos pertenecientes a la sucesión de Fibonacci resultan demasiadas soluciones, lo que le resta interés.

Con oblongos no se encuentran tampoco entre los primeros números.

Con primos, por la Conjetura de Goldbach, nos resultarían todos los números pares.

Lo dejamos aquí.

jueves, 2 de febrero de 2023

Concatenación bilateral de cifras (2)

 Extensión a otros tipos de números

En la anterior entrada creábamos números primos adosando a un número cualquiera la misma cifra bilateralmente, tantas veces como fuera necesario hasta conseguir un número primo. Ahora realizaremos estudios similares, pero buscando otro tipo de números.

 Cuadrados

Los cuadrados terminan en 0, 1, 4, 5, 6 y 9. Podríamos investigar la concatenación bilateral a un cuadrado en lugar de a un primo. Bastaría sustituir ESPRIMO por ESCUAD, función muy usada en este blog, o issquare en PARI. Las funciones son las mismas, pero con ese pequeño cambio. Para no cansar, adjuntaremos los primeros ejemplos que vayamos encontrando.

En una primera investigación observamos que no existen muchas soluciones, y que es preferible restringir nuestro estudio a un solo dígito, pues ese es el caso más frecuente, según se observa en esta primera tabla exploratoria:


Hemos encontrado las extensiones 121, 676 y 484, además de las triviales.

Parece conveniente diseñar una función nueva, a la que llamaremos extencuad, que añada a un número la misma cifra tanto a la izquierda como a la derecha. Para Excel podría ser esta:

Function extencuad(n)

Dim i, j, k, p, m

Dim s$

Dim c(5)

 

 

s = ""

If escuad(n) Then extencuad = "NO": Exit Function

‘No tenemos en cuenta los que ya son cuadrados

p = numcifras(n)

c(1) = 1: c(2) = 4: c(3) = 5: c(4) = 6: c(5) = 9 ‘Posibles cifras

For i = 1 To 5

m = 10 ^ (p + 1) * c(i) + 10 * n + c(i) ‘Se añaden cifras

If escuad(m) Then s = s + "#" + Str$(m)

Next i

If s = "" Then s = "NO"

extencuad = s

End Function

 

En la siguiente tabla se recogen los primeros ejemplos de concatenación bilateral a cuadrado. Aparecen algunos capicúas, como 12321, y una solución doble en 62:

 


En http://oeis.org/A305719 están publicadas las raíces cuadradas, ordenadas, de los resultados de la segunda columna, además de otros ejemplos:

A305719              Numbers whose squares have the same first and last digits.                   

1, 2, 3, 11, 22, 26, 39, 41, 68, 75, 97, 101, 109, 111, 119, 121, 129, 131, 139, 141, 202, 208, 212, 218, 222, 225, 235, 246, 254, 256, 264, 303, 307, 313, 319, 321, 329, 331, 339, 341, 349, 351, 359, 361, 369, 371, 379, 381, 389, 391, 399, 401, 409, 411, 419, 421, 429, 431, 439, 441,

Estos números permiten su emparejamiento con los de la primera columna, resultando una función – inútil y dependiente de la base 10 – en la que sería un reto averiguar su sentido. Parecería aleatoria:



Los cuadrados con la primera cifra igual a la última también se pueden conseguir en PARI. Basta con este código:

exten(n)={my(s=digits(n));issquare(n)&&(s[1]==s[#s])}

for(i=100,10^5,if(exten(i),print1(i,", ")))

Obtendremos esta lista, idéntica a la de Excel, pero ordenada:

121, 484, 676, 1521, 1681, 4624, 5625, 9409, 10201, 11881, 12321, 14161, 14641, 16641, 17161, 19321, 19881, 40804, 43264, 44944, 47524, 49284, 50625, 55225, 60516, 64516, 65536, 69696, 91809, 94249, 97969

El único punto difícil de entender es el de (s[1]==s[#s]). En realidad, s es el conjunto de cifras de n, #s el número de ellas, y, por tanto, s[1]  es la primera cifra y s[#s] la última.

Terminamos con el hecho de que en números menores de un millón solo existe la solución doble del 62.

 

Otro ejemplo

Triangulares

La extensión a triangulares de forma bilateral se resuelve como la de los cuadrados. Basta cambiar las posibles terminaciones de cifras, que ahora son 1, 3, 5, 6 y 8. En esta tabla figuran los primeros ejemplos:



Si en PARI sustituimos issquare(n) por issquare(8*n+1) nos resultarán soluciones triangulares ordenadas.

exten(n)={my(s=Vec(Str(n)));issquare(8*n+1)&&(s[1]==s[#s])}

for(i=100,10^5,if(exten(i),print1(i,", ")))

171, 595, 666, 1081, 1431, 1711, 1891, 3003, 3403, 5565, 5995, 6216, 6786, 8128, 8778, 10011, 10731, 11781, 12561, 13041, 13861, 15051, 15931, 16471, 17391, 18721, 19701, 33153, 34453, 38503, 39903, 52975, 54285, 54615, 55945, 59685, 60726, 61776, 63546, 66066, 67896, 69006, 83028, 85078

No tienen que coincidir con las anteriores, porque, por ejemplo, 3003 procedería de 00 y eso no lo hemos considerado. Estas sí están ordenadas.

Como ejemplos basta con estos. Ya tenemos una base para emprender otras búsquedas distintas.