viernes, 27 de noviembre de 2020

Consecutivos con las mismas cifras

El caso de 169=13^2 y 196=14^2 suele llamar la atención por el hecho de que dos elementos consecutivos de una lista tengan las mismas cifras en el sistema de numeración decimal, o lo que es igual que las cifras de uno sean anagramas de las cifras del otro. Hay muchos otros ejemplos de términos de listas que comparten cifras. Por ejemplo, los primos consecutivos 49279 y 49297. Estudiaremos algunos ejemplos de estas coincidencias.

Ya que este puede ser el más popular, comenzamos el estudio con el caso de cuadrados consecutivos, que, como suele suceder, ya está bien estudiado. Quienes seguís este blog sabéis que en estos casos nos llama más la atención los algoritmos o funciones necesarios para búsquedas con hoja de cálculo o PARI.

Función CIFRAS_IDENTICAS

Para abordar estas cuestiones disponemos hace años de la función CIFRAS_IDENTICAS, que efectúa un recuento de las frecuencias de cada cifra dentro de dos números y las compara para ver si son idénticas o existe alguna diferencia.

La versión para VBASIC de Excel y Calc puede tener esta estructura:

Public Function cifras_identicas(m, n) As Boolean

 Dim i, h, s

Dim ci As Boolean

Dim ca(10), cb(10)

 For i = 0 To 9: ca(i) = 0: cb(i) = 0: Next i ‘Se habilitan diez contenedores para las frecuencias de las cifras

 h = m ‘Se copia m porque se a ir alterando

While h > 0

i = Int(h / 10)

s = h - i * 10 ‘Se extrae cada cifra

h = i

ca(s) = ca(s) + 1 ‘Se acumulan las frecuencias

Wend

 h = n ‘Se repite el mismo trabajo con n

While h > 0

i = Int(h / 10)

s = h - i * 10

h = i

cb(s) = cb(s) + 1

Wend

 ci = True ‘Se supone que las cifras son idénticas

For i = 0 To 9

If ca(i) <> cb(i) Then ci = False ‘Si dos frecuencias son distintas, es falso

Next i

cifras_identicas = ci

End Function

 Así, la función aplicada a los números 2223334448 y 8234234234 devuelve VERDADERO, pues las cifras 2, 3, 4 y 8 poseen frecuencias iguales.

 

Si alteramos alguna frecuencia, nos devolverá FALSO:

 

Hemos tenido que construir una función de forma algo compleja, porque el lenguaje VBASIC no da mucho de sí. La función que usamos tendría este otro código en PARI:

 cifras_identicas(m,n)=vecsort(digits(m))==vecsort(digits(n))

 Se entiende con sólo leerlo: “las cifras ordenadas de m han de ser idénticas a las de n”.

 Con estas dos funciones ya estamos preparados para emprender búsquedas.


 Cuadrados consecutivos

Con la función para hojas de cálculo podemos comparar cada cuadrado con su siguiente. Mediante un bucle de búsqueda o dos columnas de Excel podemos ir comparando N^2 con (N+1)^2 y ver si las cifras son idénticas o no:

Hemos recorrido los primeros números y comparado las cifras entre su cuadrado y el cuadrado siguiente, y se ha obtenido esta tabla:

 


Los primeros cuadrados con esta propiedad están publicados en http://oeis.org/A227692

 A227692 Smaller of two consecutive squares which are anagrams (permutations) of each other.                  

169, 24649, 833569, 20367169, 214534609, 368678401, 372142681, 392554969, 407676481, 771617284, 1013021584, 1212780625, 1404075841, 1567051396, 1623848209, 2538748996, 2866103296, 2898960964, 3015437569, 3967236196, 4098688441, 4937451289

 Sus bases también están publicadas en http://oeis.org/A072841

A072841 Numbers k such that the digits of k^2 are exactly the same (albeit in different order) as the digits of (k+1)^2.

13, 157, 913, 4513, 14647, 19201, 19291, 19813, 20191, 27778, 31828, 34825, 37471, 39586, 40297, 50386, 53536, 53842, 54913, 62986, 64021, 70267, 76513, 78241, 82597, 89356, 98347, 100147, 100597, 103909, 106528, 111847, 115024, 117391, 125986

Zak Seidov indica en esa página que todos los elementos de esta lista tendrán la forma 9k+4. Se puede razonar con facilidad: si N^2 y (N+1)^2 poseen las mismas cifras, y por tanto la misma suma de ellas, luego su diferencia será múltiplo de 9, es decir:

(N+1)^2-N^2=9m, o lo que es igual,

2N+1=9m, 2N=9m-1, luego 2N tendrá resto -1 respecto a 9, que equivale a resto 8. Por tanto, N tendrá resto 4, y será de la forma 9k+4.

Michel Marcus propone un código PARI idéntico al propuesto más arriba (no lo había consultado previamente):

 (PARI) isok(n) = vecsort(digits(n^2)) == vecsort(digits((n+1)^2)); \\ Michel Marcus, Sep 30 2016

 Primos consecutivos

Si comparamos cada número primo con su siguiente, podemos detectar pares anagramáticos. Para Excel o Calc necesitaremos las funciones ESPRIMO y PRIMPROX, que puedes consultar en la siguiente entrada de este blog:

http://hojaynumeros.blogspot.com.es/2012/04/proposito-de-ormiston.html

Con estas dos funciones podemos construir otra que nos devuelva si un número es primo y anagramático con su siguiente:

Public Function anagram_primo(n) As Boolean

If esprimo(n) And cifras_identicas(n, primprox(n)) Then anagram_primo = True Else anagram_primo = False

End Function

Puedes intentar reproducir la tabla siguiente, mediante un bucle FOR-NEXT de búsqueda:

Si usamos en PARI la instrucción nextprime, podemos fácilmente detectar de otra forma qué primos consecutivos son anagrámaticos entre sí:

cifras_identicas(m,n)=vecsort(digits(m))==vecsort(digits(n))

anagram_primo(k)=isprime(k)&&cifras_identicas(k,nextprime(k+1))

for(i=2,10^5,if(anagram_primo(i),print1(i,", ")))

El resultado es:

Coincide con el obtenido con Excel y con el publicado en la siguiente página:

http://oeis.org/A069567

A069567  Smaller of two consecutive primes which are anagrams of each other.

1913, 18379, 19013, 25013, 34613, 35617, 35879, 36979, 37379, 37813, 40013, 40213, 40639, 45613, 48091, 49279, 51613, 55313, 56179, 56713, 58613, 63079, 63179, 64091, 65479, 66413, 74779, 75913, 76213, 76579, 76679, 85313, 88379

A estos pares de primos se les da el nombre de “pares de primos de Ormiston”. Se ha conjeturado que existen infinitos pares de este tipo. Existen conjuntos similares pero de más de dos primos.

Triangulares consecutivos

Podemos sustituir la función ESPRIMO por ESTRIANGULAR. Esta última se basa en la idea de que un número triangular multiplicado por 8 y sumado con la unidad se convierte en un cuadrado. Es fácil razonarlo:

Con esta propiedad se construye la siguiente función:

Function estriangular(n) As Boolean

Dim a

If escuad(8 * n + 1) Then estriangular = True Else estriangular = False

End Function

 

Si la usamos de una forma parecida a como integramos ESPRIMO en ANAGRAM_PRIMO, podemos construir una búsqueda similar con triangulares. Para ello necesitamos otra función, que dado un triangular, nos devuelva su número de orden:

Public Function ordentriang(n)

Dim k

If estriangular(n) Then k = Int((Sqr(8 * n + 1) - 1) / 2) Else k = 0

ordentriang = k

End Function

 Al final, la búsqueda de triangulares consecutivos anagramáticos quedaría así:

Public Function anagram_triang(n) As Boolean

Dim k

Dim es As Boolean

 es = False

If estriangular(n) Then

k = ordentriang(n)

If cifras_identicas(n, (k + 1) * (k + 2) / 2) Then es = True

End If

anagram_triang = es

End Function

 

Con ella podemos buscar los triangulares consecutivos anagramáticos. No es fácil, porque el primero es 404550. Puede merecer la pena pasar a PARI:

cifras_identicas(m,n)=vecsort(digits(m))==vecsort(digits(n))

anagram_triang(k)={my(b,a,m=0);if(issquare(8*k+1),b=truncate((sqrt(8*k+1)-1)/2);a=(b+1)*(b+2)/2;if(cifras_identicas(k,a),m=1));m}

for(i=1,1e8,if(anagram_triang(i),print(i)))

 Con este código obtenemos los primeros triangulares anagramáticos con su siguiente:

404550, 2653056, 3643650, 5633046, 6413571, 10122750, 10656036, 13762881, 19841850, 26634051, 32800950, 47848653, 56769840, 71634465, 89184690,…

La lista la tienes más completa en

http://oeis.org/A247305

A247305 The smaller of two consecutive triangular numbers which are permutations of each other.              

404550, 2653056, 3643650, 5633046, 6413571, 10122750, 10656036, 13762881, 19841850, 26634051, 32800950, 47848653, 56769840, 71634465, 89184690, 103672800, 137108520, 317053971, 345069585, 392714325, 408508236, 440762895, 508948560, 598735710, 718830486, 825215625,…

De forma parecida a lo que ocurrió con los cuadrados, la diferencia entre dos triangulares será múltiplo de 9, pero esa diferencia es n+1, luego n+1=9k, y n(n+1)/2=(n/2)*9k. Si k es par, (k=2m), quedaría n(n+1)/2=n*9m, que sería múltiplo de 9. Si k es impar, lo será n+1, luego n/2 será entero al ser par n. Por tanto, también quedaría un múltiplo de 9.

Todos los términos de la sucesión son múltiplos de 9.

Oblongos consecutivos

Podemos repetir el estudio con los números oblongos, es decir, con n(n+1) comparado con (n+1)(n+2). Seguiremos con PARI, pero sustituyendo la condición issquare(8*k+1) que caracteriza a los triangulares por issquare(4*k+1), que corresponde a sus dobles, que son los oblongos. Así que, si definimos como ok(k) la función que determina si un oblongo es anagramático con su siguiente, nos quedaría:

ok(k)={my(b,m=0);if(issquare(4*k+1),b=truncate(sqrt(4*k+1)-1)/2;if(vecsort(digits(k))==vecsort(digits((b+1)*(b+2))),m=1));m}

 Con esta función podemos encontrar los primeros oblongos que cumplen la condición pedida. Los primeros son estos:

23256, 530712, 809100, 11692980, 17812620, 20245500, 22834062, 23527350, 29154600, 83768256, 182236500, 189847062, 506227500, 600127506, 992218500, 1363566402, 1640209500, 2175895962, 2422657620, 2477899062, 2520190602, 3041687952, 3764129256, 4760103042,…

Esta sucesión permanecía inédita y la hemos publicado en https://oeis.org/A337784.

Existe una forma más rápida de encontrar estos oblongos, y es darle el protagonismo a sus índices. En lugar de una función usaremos un bucle FOR-NEXT:

for(i=1,1000000, a=i*(i+1); b=(i+1)*(i+2); if(vecsort(digits(a))==vecsort(digits(b)), print1(a,", ")))

Si en la instrucción print1(a,", ") sustituimos a por i, nos devolverá los índices de los oblongos encontrados:

152, 728, 899, 3419, 4220, 4499, 4778, 4850, 5399, 9152, 13499, 13778, 22499, 24497, 31499, 36926, 40499, 46646, 49220, 49778, 50201, 55151, 61352, 68993,…

Relación con el 9

Todos los números oblongos descubiertos son múltiplos de 9. Lo razonamos:

Si n(n+1) es anagramático con (n+1)(n+2), su diferencia, 2(n+1) será un múltiplo de 9

2(n+1)=9k; n=9k/2-1, luego k es par y n tendría resto 8 respecto al módulo 9. Lo puedes comprobar en el listado de índices de unas líneas más arriba. Así que n=(9k-2)/2 con k par.

El número oblongo n(n+1) quedaría como n(n+1)=(9k-2)/2*((9k-2)/2+1)=n*9k/2. Al ser k par, n(n+1) será múltiplo de 9. También los puedes comprobar en el listado de oblongos. De hecho, sus diferencias son múltiplos de 18.

Con esto finalizamos el tema. Otros tipos de números no presentan con facilidad esta propiedad de ser anagramáticos.

lunes, 16 de noviembre de 2020

Números pentagonales (2)

Algunas propiedades de los números pentagonales

En la anterior entrada se presentaron los números pentagonales desde varios puntos de vista. En esta otra repasaremos algunas propiedades curiosas.

El promedio de los primeros números pentagonales es un número triangular

Antes de sumar los números pentagonales hay que recordar estas dos igualdades:

Con estas dos fórmulas podemos sumar pentagonales:

Con unas pocas simplificaciones llegamos a

De esta igualdad sacamos dos consecuencias:

La expresión de la suma de los primeros números pentagonales coincide con la fórmula de los piramidales pentagonales. Esto es consecuencia de su definición. Puedes comprobarlo en mi publicación “Números piramidales”

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

Tal como hemos afirmado, si dividimos la expresión obtenida entre n obtendremos el promedio de los primeros pentagonales y, en efecto, resulta un número triangular:

Por tanto, el promedio es triangular.

 Números pentagonales como suma de números consecutivos

Según Jon Perry, podemos interpretar el pentagonal de orden n como la suma de n números enteros consecutivos que comienzan en n. Es decir:

 


Por ejemplo, P4=4+5+6+7=22, P5=5+6+7+8+9=35.

Si recordamos que los números triangulares, de fórmula n(n+1)/2, son suma de números consecutivos, tendríamos, para P5:

P5=5+6+7+8+9=9(9+1)/2-4*(4+1)/2=45-10=35.

En general, según esta propiedad:

Pn =T(2n-1)-T(n-1)=(2n-1)*2n/2-(n-1)*n/2=(4n2-2n-n2+n)/2=(3n2-n)/2=n(3n-1)/2

Por tanto, coincide con la fórmula de los números pentagonales.

Hemos comprobado de paso que todo número pentagonal es diferencia entre dos triangulares.

 

Números pentagonales como suma de una progresión aritmética:

También Jon Perry interpreta un número pentagonal como una suma parcial en la progresión aritmética de diferencia 3: 1, 4, 7, 10, 13,…

Antes de demostrarlo algebraicamente, podemos visualizar esta propiedad fácilmente. Basta considerar las líneas poligonales que hemos añadido al esquema gráfico de estos números:



Aunque las líneas están trazadas a mano alzada, se perciben bien los sumandos 1, 4, 7, 10 y 13.

Si recordamos la fórmula de la suma de una progresión aritmética, podremos justificarlo algebraicamente:

Esta propiedad nos permite calcular cualquier número pentagonal por recursión. Basta darse cuenta de que Pn+1=Pn+3n+1.

Así, P1=1, P2=1+3+1=5, P3=5+3*2+1=12, P4=12+3*3+1=22,…

 

Un número pentagonal es suma de un combinatorio y un cuadrado

En efecto:

 


Un número pentagonal es un tercio de otro triangular

Es fácil demostrar que si el orden del pentagonal es k, el del triangular es 3k-1:

 


Pentagonales multipoligonales

Los números pentagonales pueden ser también cuadrados, triangulares o hexagonales. Los cuadrados los puedes consultar en

http://oeis.org/A036353

0, 1, 9801, 94109401, 903638458801, 8676736387298001, 83314021887196947001, 799981229484128697805801, 7681419682192581869134354401, 73756990988431941623299373152801

Disponemos en este blog de la función doblepolig, que nos indica si un número pertenece a dos tipos concretos de número poligonal. Puedes consultarla en

https://hojaynumeros.blogspot.com/search?q=multipoligonal

Con esta función es trivial reproducir la lista de más arriba,ya que basta exigir doblepolig(5,4).El problema radica en que Excel no puede llegar a estos números enormes, pero sí detecta el 9801:

9801 # 4,  99 # 5,  81 # 180,  11 # 274,  9 # 655,  6 # 3268,  3 # 9801,  2         

Se observa que 9801 es cuadrado y pentagonal, además de poligonal de 180, 274, 655, 3268 y 9801 lados.

Con esta función podemos encontrar los primeros pentagonales que son poligonales de otros tipos. Incluimos algunos (no tenemos en cuenta el 1):

Pentagonal y triangular: 210 y40755      

Pentagonal y hexagonal: 40755

Pentagonal y heptagonal: 4347

Y así podríamos seguir.

 

Teorema de Fermat para pentagonales

Fermat afirmó, y se demostró posteriormente, que todo número natural es suma de a lo más n números poligonales. En el caso de los pentagonales se deduce que todo natural es suma de como máximo cinco pentagonales.

La comprobación práctica de esta propiedad puede resultar algo complicada de seguir. No es difícil conseguirlo con nuestro programa de Excel y Calc Cartesius

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

En la captura de pantalla siguiente se presentan todas posibilidades de descomposición en pentagonales del número 121. Observamos que puede obtenerse con dos, tres, cuatro o cinco sumandos pentaonales. El papel del cero e importante. Sin él, sólo obtendríamos sumas de cinco sumandos pentagonales.

El planteo adecuado para conseguir esto es similar al siguiente:

xtotal=5

xt=1..10

xt=suc((n-1)*(3*(n-1)-1)/2)

suma=121

creciente

Explicamos línea por línea:

xtotal=5: Indica que el número de sumandos es 5

xt=1..10: Este es el rango de búsqueda de los índices de los pentagonales que se van a sumar. Es deseable que abarque hasta el índice del número que se va a probar o algo más. En nuestro caso, para 121 está bien un rango de 10.

xt=suc((n-1)*(3*(n-1)-1)/2): Esta es la instrucción fundamental. Indica que se construya el pentagonal de índice n-1, para que así contemos con el cero como sumando

suma=121: Escribe el total que deben dar los sumandos. En este caso, 121.

Creciente: Se incluye para eliminar casos repetidos.


Con esto finaliza nuestro repaso de los números pentagonales. Podíamos pasar a los generalizados, pero no entra dentro de los objetivos de este blog.

miércoles, 4 de noviembre de 2020

Números pentagonales (1)

Introducción

Dentro del repaso sistemático de los números poligonales que haremos en este curso, les toca el turno hoy a los pentagonales, poligonales de cinco lados. Además de las propiedades generales que comparten todos los tipos de poligonales, estos presentan algunas propiedades interesantes propias, como algún teorema muy conocido. Las recorremos.

Definición e inserción con los poligonales en general

Los números poligonales se forman mediante los contornos de polígonos regulares con lados de 1 a n puntos, con la condición de que compartan un vértice y sus dos lados contiguos. En nuestro caso se trata de pentágonos, pero ya conocerás los números triangulares, cuadrados o hexagonales, que presentan el mismo proceso de formación.

Quienes estudian estos números por primera vez tienen dificultades en entender este esquema, pues lo confunden con pentágonos concéntricos. La figura anterior la hemos construido con Excel, por lo que no presenta la regularidad en su diseño propia de programas de dibujo e imágenes.

Fórmula

Todos los números poligonales se pueden calcular con la siguiente fórmula (ver mi publicación “Números y formas” 

http://www.hojamat.es/publicaciones/numform.pdf):

En ella k es el números de lados y l la longitud de cada lado o índice. En nuestro caso de pentagonales haremos k=5 y al lado le llamaremos n. Quedará:

Con esta fórmula puedes obtener los primeros números pentagonales:

1, 5, 12, 22, 35, 51, 70, 92, 117, 145, 176, 210, 247, 287, 330, 376, 425, 477, 532, 590, 651, 715, 782, 852, 925, 1001, 1080, 1162, 1247, 1335, 1426, 1520, 1617, 1717, 1820, 1926, 2035, 2147,…

Los tienes publicados en http://oeis.org/A000326

Con la fórmula y una hoja de cálculo puedes obtener fácilmente una tabla:



Otra forma de deducir la fórmula

Según la propiedad general de los poligonales, los pentagonales serán equivalentes a tres triangulares de una unidad menos más la longitud del lado. En la imagen, los triangulares están dibujados con distintos colores y el lado final en azul.

Luego

 


Puedes contar las unidades de los primeros pentagonales en las siguientes imágenes, creadas con Excel:

N=4

Puedes contar a ojo que son 22 unidades, tal como predice la fórmula.

N=5



Son 35 unidades.

N=6



Los números pentagonales no deben confundirse con los números pentagonales centrados, que puedes estudiar en mi publicación enlazada más arriba.


Fórmula recursiva

Hemos copiado esta fórmula de OEIS:

a(0) = 0, a(1) = 1; for n >= 2, a(n) = 2*a(n-1) - a(n-2) + 3. - Miklos Kristof, Mar 09 2005

Si sustituimos cada término por la fórmula basta simplificar para obtener a(n). En la siguiente captura de pantalla (calculadora WIRIS) se puede observar la simplificación:


Como simple curiosidad, con esta función usaríamos la recurrencia explicada. No tiene utilidad, pero sirve para buscar rutas alternativas en casos similares:

Public Function penta2(n)

If n = 1 Then

penta2 = 1

ElseIf n = 2 Then

penta2 = 5

Else

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

End If

End Function

 No necesita explicación, ya que asigna el valor 1 al primer pentagonal, el 5 al segundo y al resto la recurrencia. Con ella podemos construir una tabla de valores, que coincida con lo ya explicado:

 


 

Criterio para reconocer pentagonales

En este blog hemos usado con frecuencia las funciones ESCUAD y ESTRIANGULAR para saber si un número es de ese tipo (cuadrado o triangular) o no. No es difícil construir una similar para los pentagonales. Basta seguir estos cálculos algebraicos. Sea P el posible número pentagonal y llamemos n a su orden. Entonces

P=n*(3n-1)/2; 2P=3n2-n; 3n2-n-2P=0

Al resolver esta ecuación de segundo grado vemos que el discriminante es 1+24P, luego debe ser un cuadrado perfecto. Ya tenemos un criterio, pues serán pentagonales los números que cumplan que 1+24P sea un cuadrado. Si esto se cumple, al resolver la ecuación obtendremos su índice.

Esta función devuelve un cero si el número no es pentagonal y si lo es, dará el valor de su índice u orden:

 Public Function ordenpentagonal(n)

Dim a, b

 

b = 0 ‘Iniciamos el orden con un cero, por si no es pentagonal

a = 1 + 24 * n ‘Discriminante

If escuad(a) Then b = (1 + Sqr(a)) / 6 ’ Si el discriminante es cuadrado, resolvemos

If b = Int(b) Then ordenpentagonal = b ‘Si b es entero, ese será el orden

End Function

 En la siguiente tabla puedes ver una lista de números consecutivos de los que solo 12 y 22 son pentagonales:

Con esta función puedes buscar directamente números pentagonales mayores. Por ejemplo, 1001 es el pentagonal 26 y 10045 es el número 82.

Uso de la calculadora “Calcupol”

En todas las entradas referidas a números poligonales nos referiremos a esta calculadora. Será inevitable repetir algunas instrucciones para cada tipo, pero el autor ignora en qué orden se pueden leer estas entradas, por lo que es preferible repetir a no explicar.

Si ya la conoces, puedes saltar estos párrafos.

Esta calculadora es una hoja de cálculo (En Excel o Calc) que puedes descargar desde mi página web:

http://www.hojamat.es/sindecimales/aritmetica/herramientas/hoja/calcupol.xlsm

Para usar la calculadora para números pentagonales basta elegir Tipo Poligonal y Orden 5. No es necesario para calcularlos, pero sí para otras prestaciones.

Las operaciones fundamentales que puedes efectuar son:

Cálculo directo: Basta escribir (recuerda que todo va con el ratón) 5 POL y después el índice o longitud del lado (termina siempre con el signo =). Por ejemplo, si tecleas 5  POL  1  2  =   obtendrás el pentagonal número 12, que es el 210:



Identificación: Si ya has concretado Poligonal Orden 5, puedes usar la tecla  ES  para saber si un número es o no pentagonal. Escribe, por ejemplo, 2035 y pulsa esa tecla ES

(puedes borrar pantalla con la tecla  CA  )

Obtendrás una respuesta afirmativa


Y en pantalla aparecerá su índice, 37:

Borra pantalla y escribe 2040 y observarás la respuesta negativa:


Próximo y anterior

Con las teclas   PROX  y  ANT  podemos recorrer todos los número pentagonales. Si tienes en pantalla 2040, al pulsar   ANT  obtendrás de nuevo 2035 y si ahora usas  PROX  se saltará el valor 2040 y pasará al siguiente pentagonal 2147.

En la siguiente entrada estudiaremos algunas propiedads curiosas de estos números.