miércoles, 20 de abril de 2022

Números consecutivos con una suma del mismo tipo

 

En mis cálculos diarios de Twitter uso a menudo el concepto de suma simétrica, en la que considero tres sumandos con un repetido, y que los tres presenten una misma propiedad. Por ejemplo, 80=23+43+23, es decir, una suma simétrica de cubos. Lo curioso en este caso es que su consecutivo, 81, también presenta esa misma propiedad, ya que 81=33+33+33. ¿Existirán muchos pares de este tipo, que sean consecutivos y con el mismo tipo de suma simétrica?

Como la búsqueda promete ser larga, la dividiremos en tipos. Es ya frecuente en este blog, interrumpir un estudio cuando se perciba que la cuestión se alarga o pierde interés.

Suma simétrica de cubos

Comenzamos por este caso por ser el primero que se consideró. Además del par 80, 81 existen otros, como veremos.

En primer lugar, necesitaremos saber cuándo un número se puede expresar como suma simétrica de cubos. El objetivo inmediato es conocer la forma de identificar un cubo. El problema lo constituyen los decimales y el redondeo, por lo que podemos usar una identificación en dos pasos, extrayendo la raíz cúbica y más tarde comprobar que su cubo coincide con el número deseado. Sería algo así:

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

 

Un criterio más fiable, pero más lento, es el de extraer los factores primos y exigir que todos los exponentes sean iguales a 3 (o a un múltiplo de 3). Disponemos de una función diseñada para encontrar el exponente común mínimo entre los factores primos de un número natural. Sería esta otra:

Public Function espotencia(n)

Dim i, j, s, p

If n = 1 Then espotencia = 0: Exit Function

p = n

j = sacaprimos(p) ‘Construye la descomposición factorial

s = expo(1)

If j > 1 Then

For i = 2 To j

s = mcd(s, expo(i)) ‘Elige el mínimo MCD de los exponentes

Next i

End If

If s = 1 Then s = 0

espotencia = s

End Function

 

Devuelve el MCD de los exponentes, y si es 3 o múltiplo de 3, ya tenemos un cubo.

En este proceso usaremos la primera versión para encontrar soluciones, y luego verificaremos con la segunda, que es más lenta, sin publicar de nuevo los resultados.

Una vez identificados los cubos, habrá que determinar si un número es suma simétrica de dos cubos. Para eso estaría esta otra función:

Public Function sumasimcubos(n) As Boolean

Dim i, m

Dim novale As Boolean

i = 1

novale = True

While i < (n - 1) ^ (1 / 3) And novale ‘Buscamos el sumando central

If escubo((n - i ^ 3) / 2) Then novale = False ‘Restamos y dividimos entre 2 para ver el otro

i = i + 1

Wend

sumasimcubos = Not novale

End Function

 

Esta función te indica si un número es suma de cubos simétricos o no. Ya solo queda aplicarle esta prueba a dos números consecutivos. En la práctica, la función va a devolver la suma en modo texto, pero no se quería complicar esta explicación. Aplicada de esta forma, nos da los siguientes pares:


Por ejemplo:

176200=443+183+443 y  176201=173+553+173

El lenguaje PARI devuelve resultados con más rapidez, por lo que también es conveniente adaptar a él este proceso. Así llegamos un poco más lejos, pero no se ha pretendido agotar el tema y hemos detenido la búsqueda en 300000

scube(n)={my(i=1,m); while(i<(n-1)^(1/3),m=(n-i^3)/2; if(ispower(m,3),return(1));i+=1)}

ok(n)=scube(n)&&scube(n+1)

for(i=1,300000,if(ok(i),print1(i,", ")))

80, 344, 3429, 7290, 12393, 14749, 61318, 85751, 92609, 95010, 120311, 167399, 170173, 171181, 173743, 173778, 176200, 185442, 250063, 252046, 277694,…

Búsqueda directa con Excel

Podemos organizar una tabla de doble entrada XY en cuyo interior situemos las sumas x3+2y3, y no tendremos más que buscar consecutivos. En la imagen están destacados cuatro pares:


Esto no sería fiable, porque la vista nos puede engañar y perdernos un par. Lo indicado aquí sería escribirlos en columna, ordenarlos después y comprobar que los consecutivos que cumplen la propiedad caen uno debajo del otro.


Este procedimiento sí nos daría más seguridad, pero, o se resolvía con macros, o nos tendría bastante tiempo ocupados. Dejamos esa puerta abierta a nuevos métodos

Suma de  potencias

Después de investigar sobre cubos, lo indicado es pasar a los cuadrados u otras potencias. Con cuadrados aparecen tantos ejemplos que hacen perder el interés por la búsqueda. Si en las funciones usadas para los cubos vamos cambiando los exponentes 3 por 2, obtendremos las sumas simétricas de cuadrados. Los primeros casos de consecutivos son estos:


Llama la atención la aparición de conjuntos de tres consecutivos, como 17, 18, 19, o 66, 67, 68. Como simple curiosidad, se adjuntan a continuación los primeros:

Su misma abundancia le resta interés.

Cuartas potencias

Este caso es mucho menos frecuente. Volvemos a adaptar la función para cubos cambiando 3 por 4 y obtenemos una primera solución:

14802=74+104+74         14803=34+114+34

No existen, al parecer, otras soluciones menores que 106, por lo que dejamos abierta la búsqueda.

Como es nuestra norma, paramos aquí las potencias, para no alargar. Con lo publicado ya hay información suficiente para los lectores que deseen emprender otras búsquedas.

Otros tipos

Al comenzar a redactar esta entrada parecía que existiría gran variedad de soluciones en otros tipos de números, pero la realidad nos ha devuelto casos con demasiados resultados o con demasiado pocos. Esto hace perder interés a lo que sigue, pero hemos preferido mantenerlo.

Triangulares

Este tipo de números lo consideramos muy a menudo en nuestras búsquedas, porque no suele defraudar. Habrá que alterar ligeramente nuestra función, pues usaremos ESTRIANGULAR, que puedes encontrar en muchas entradas de este blog. Quedaría la función así (la seguimos llamando sumasimcubos):

Public Function sumasimcubos$(n)

Dim i, m, p, q

Dim s$

i = 1

s = ""

While i < Sqr(2 * n) And s = "" ‘El mayor triangular sería Sqr(2*n)

q = i * (i + 1) / 2 ‘Se construye el primer triangular

m = (n - q) / 2 ‘Diferencia para encontrar los simétricos

If estriangular(m) And m > 0 Then  s = Str$(m) + ", " + Str$(q) + ", " + Str$(m) ‘Es triangular y paramos

i = i + 1

Wend

sumasimcubos = s

End Function

Con esta función se obtienen muchas soluciones, como nos ocurrió con los cuadrados:



No tiene interés seguir.

Oblongos

Es inútil buscarlos, porque todos son pares y no puede darse la propiedad buscada en dos números consecutivos, uno par y otro impar.

Primos

Para que se cumpla lo que pretendemos, en uno de los consecutivos el primo central deberá ser 2, pero no tendremos esto en cuenta y sustituiremos triangular por primo y estriangular por esprimo. Como no existe fórmula para los primos, usaremos la función para el próximo primo PRIMPROX. Todas ellas ya han sido usadas en otras entradas.

Al ser obligada la presencia del 2 en uno de los números hace que aparezcan muchos consecutivos en los que el término central es 2 en el menor y 3 en el mayor, como puede comprobarse en este resultado:


También aquí obtenemos muchos resultados. Nos estamos quedando con pocos tipos interesantes. Hemos intentado con los números de Fibonacci y también resultan muchas soluciones, demasiadas para sacar consecuencias interesantes. Con los factoriales también se desvirtúa la búsqueda con 1! y 2! que son consecutivos. Así que hasta aquí llegó el estudio.

 

 

miércoles, 6 de abril de 2022

Relaciones entre números con cifras simétricas

Efectuar comparaciones teóricas basadas en las cifras de un número en base diez no es muy matemático, por lo que consideraré este tema como un mero entretenimiento. Su objetivo principal será el de practicar funciones, búsquedas y algoritmos. Estudiaremos números simétricos en sus cifras, en los que las de uno sean iguales a las del otro, pero en orden inverso. Para evitar casos ambiguos o singulares, prescindiremos de los múltiplos de 10, para así no considerar el cero a la izquierda que supone, en realidad, que el número de cifras es distinto en ambos, el número y su simétrico. También, en algunas cuestiones no consideraremos los números capicúas o palindrómicos.

Recorreremos algunas propiedades que pueden presentar ambos, número y simétrico.

La diferencia es divisor de ambos

En Excel poseemos una función propia de autor, CIFRAINVER, que transforma un número en su simétrico en cifras. Como explicarla no es un objetivo de este texto, la incluimos en un Anexo al final de la entrada. El resultado de esta función se puede manejar como un número y operar con él normalmente. Así, la diferencia entre un número y su simétrico vendrá dada por d=n-CIFRAINVER(n) y si no es nulo (sería un capicúa) nos preguntaremos si ambos números simétricos son múltiplos de d. Buscamos esas condiciones y obtendremos las soluciones:

45, 54, 495, 594, 4356, 4545, 4995, 5454, 5994, 6534, 10890, 19602, 20691, 29403, 30492, 39204, 40293, 43956, 45045, 49005, 49995, …

Si la diferencia entre dos números es divisor de ambos, sabemos que será su máximo común divisor, lo que sería una definición alternativa de esta búsqueda.

Por ejemplo, 59994-49995=9999, que es M.C.D. de ambos, como puedes comprobar con la fórmula M.C.D(59994;49995).

Para confeccionar una lista podríamos exigir que cada término fuera menor que su simétrico, y así se evitarían duplicaciones en los pares de números, como ha ocurrido con 495 y 594.

Planteado así, resultan los siguientes términos de una sucesión:

45, 495, 4356, 4545, 4995, 19602, 29403, 39204, 43956, 45045, 49005, 49995, 68607, 197802, 296703, 395604, 439956, 450045, 454545, 494505, 495495, 499995, 593406, 692307, 791208, 890109, 1979802, 2969703, 3959604, 4399956, 4500045, 4549545, 4949505, 4950495, 4999995, 5939406, 6929307, 7919208, 8909109,…

Entre ellos figuran los números del tipo 4999..995. Es fácil encontrar la causa, ya que estos números equivalen a 5*(10k-1), y sus simétricos (del 5999…994) tienen la forma 6*(10k-1). Al restarlos resulta 6*10k-6-5*10k+5=10k-1=999…99, que divide a ambos. Cuando ocurre esto, sabemos por el algoritmo de Euclides, que la diferencia será el M.C.D.

Puedes efectuar razonamientos similares con 4545…45 y con 4500…045.

Con el lenguaje PARI se consigue el mismo resultado. Hemos usado el siguiente código:

ok(n)={my(k,d);k=eval(concat(Vecrev(Str(n))));d=abs(n-k);n%10<>0&&d==gcd(n,k)&&n<k}

for(i=1,100000,if(ok(i),print1(i,”, “)))

Con él se consigue la misma sucesión:


El cuadrado de uno es simétrico con el del otro

En esta serie de búsquedas estamos tratando con números simétricos en la base de numeración 10. Por eso viene bien un regreso a una de nuestras entradas de hace años, en la que proponíamos algunos retos.

https://hojaynumeros.blogspot.com/2009/03/cuadrado-del-simetrico-o-simetrico-del.html

En concreto,  se basaban en una mención de una propiedad publicada por Claudi Alsina, en su libro “Vitaminas matemáticas”, y es que el número 12 presenta la siguiente propiedad: 122 = 144 y 212 = 441, es decir, que el cuadrado de su número simétrico en cifras coincide con el simétrico de su cuadrado.

Con el uso de nuestra función CIFRAINVER podemos ampliar y resolver por algoritmo las propuestas que se efectuaban sobre esta situación. Usaremos una función con una sola línea, que devolverá si esta propiedad se verifica (VERDADERO) o no (valor FALSO). Es esta:

 

Function cuadsimetrico(n) As Boolean

Dim m

m = cifrainver(n)

cuadsimetrico = (n ^ 2 = (cifrainver(m ^ 2)) And n < m)

End Function

En ella se asigna como valor de salida la igualdad entre el cuadrado del número y el simétrico del cuadrado del simétrico. Se le añade la condición de que el número sea menor que su simétrico, para evitar palíndromos y repeticiones. Con ella se puede reproducir la lista de soluciones propuesta en esta antigua entrada:

12, 13, 102, 103, 112, 113, 122, 1002, 1003, 1011, 1012, 1013, 1021, 1022, 1031, 1102, 1103, 1112, 1113, 1121, 1122, 1202, 1212, 2012, 2022, 10002, 10003, 10011, 10012, 10013, 10021, 10022, 10031, 10102, 10103, 10111, 10112, 10113, 10121, 10122, 10202, 10211, 10212, 10221, 11002, 11003, 11012, 11013, 11021, 11022, 11031, 11102, 11103, 11112, 11113, 11121, 11122, 11202, 12002, 12012, 12102, 12202, 20012, 20022, 20112, 20122,

En http://oeis.org/A106323 figura una sucesión similar, y con casi todos los elementos comunes, pero no exige que las bases de los cuadrados sean simétricas. Por eso admite el 33 y el 3168.

En la entrada recordada se razonaba que en estos números no podían figurar las cifras comprendidas entre 4 y 9, porque producirían arrastres de cifras al calcular su cuadrado. Por una razón similar, no existen soluciones que terminen en 23, pues 2*3+3*2=12 y produce un arrastre de 1.

 

El producto de simétricos produce un capicúa

Para encontrar las soluciones usamos una función similar a la de la cuestión anterior:

Public Function producapicua(n) As Boolean

Dim m

m = cifrainver(n)

producapicua = escapicua(n * m) And n < m

End Function

En ella exigimos que el producto de simétricos sea capicúa y que el número devuelto por la función sea el menor del par.

La función escapicua se limita a exigir que cifrainver(n)=n

El listado obtenido con ella es:

12, 21, 102, 112, 122, 201, 211, 221, 1002, 1011, 1012, 1021, 1022, 1101, 1102, 1112, 1121, 1201, 1202, 1211, 2001, 2011, 2012, 2021, 2101, 2102, 2111, 2201, 10002, 10011, 10012, 10021, 10022, 10102, 10111, 10112, 10121,…

Vemos que aquí también existe restricción de cifras, por una cuestión de arrastres en las operaciones de multiplicar.

 Hemos tomado el menor. Si consideramos el par de simétricos, encontraremos la sucesión en http://oeis.org/A048344:

A048344              a(n) * a(n)_reversed is a palindrome (and a(n) is not palindromic).      

12, 21, 102, 112, 122, 201, 211, 221, 1002, 1011, 1012, 1021, 1022, 1101, 1102, 1112, 1121, 1201, 1202, 1211, 2001, 2011, 2012, 2021, 2101, 2102, 2111, 2201, 10002, 10011, 10012, 10021, 10022, 10102, 10111, 10112, 10121, 10202, 10211, 11001

No exige que el número sea menor que su simétrico. Por eso se obtiene el doble de soluciones.

Un ejemplo: 2102*2012=4229224

Los dos simétricos son del mismo tipo

Si usamos las funciones propias escuad, estriangular o esoblongo, por ejemplo (puedes buscarlas  en este blog) obtendremos los simétricos que coinciden en su tipo.

Primos

El caso de primos está muy estudiado, y se les llama omirp o emirp en inglés (ver http://oeis.org/A006567)

En este blog hemos estudiado los “palprimos”, o primos palindrómicos:

https://hojaynumeros.blogspot.com/2016/05/palprimos-primos-palindromicos.html

Triangulares

Para encontrar números triangulares simétricos y que no sean capicúas ni múltiplos de 10 (para que tengan igual número de cifras) podemos usar esta condición:

 a=cifrainver(i)

estriangular(i) And estriangular(a) And i < a And i / 10 <> i \ 10

Al exigir que i<a nos quedamos con los valores menores de cada par. Hay pocos, por lo que entre 1 y 20000 sólo hemos encontrado 153 y 17578. No hemos seguido, porque ya están publicados en

http://oeis.org/A066528:

153, 351, 17578, 87571, 185745, 547581, 1461195, 5911641, 12145056, 12517506, 60571521, 65054121, 304119453, 354911403,…

Con nuestra función Ordentriang (también la puedes buscar en este blog) podemos comprobar alguno de los pares:

12517506=5003*5004/2       

60571521=11006*11007/2

Ambos son triangulares.

No hay más que añadir, ya se indicó que este tema es poco matemático.

Cuadrados

Es la misma cuestión que planteamos antes, pero sin exigir que si los números son cuadrados, las bases también lo sean. Si seguimos exigiendo que no sean capicúas ni múltiplos de 10, queda como condición

a = cifrainver(i)

escuad(i) And escuad(a) And i < a And i / 10 <> i \ 10

Obtenemos:

Coinciden con los publicados en http://oeis.org/A156316

Oblongos

Hay pocos ejemplos. Hemos encontrado tres sin esfuerzo:

29756, 2150622, 2898506.

Aquí podemos comprobar que ambos son oblongos:

29756 =172*173

65792 =256*257

 

2150622 =1466*1467

2260512 =1503*1504

 

2898506 =1702*1703

6058982 =2461*2462

 

Cubos

No parecen existir soluciones con menores que 2*10^7

Si exigimos que ambos sean son suma de cubos, ahí sí existen soluciones (figuran los menores de cada par y no múltiplos de 10):

1008, 1332, 1339, 4608, 13895, 14364, 16263, 19773, 27027, 32535, 39528, 107136, 119853, 157248, 158184, 179513, 195237, 199143, 318968, 373464, 399665, 406224, 422218, 476379,

Por ejemplo, 27027=30^3+3^3 y 72072 =32^3+34^3

Esto no da más de sí. Ya se advirtió al principio que era un tema poco matemático, pero igual alguien que lea esta entrada le puede servir para que se le ocurran ideas similares.


ANEXO

Función CIFRAINVER

Convierte un número en su simétrico en cifras. Lo devuelve como tal número, por lo que se puede operar con él con las distintas operaciones matemáticas y funciones.

 

Public Function cifrainver(n)

Dim l, i

Dim c

Dim auxi$, auxi2$, ci$

' invierte el orden de las cifras para dar otro

If n < 10 Then cifrainver = n: Exit Function  ‘Número de una cifra

auxi = haztexto(n) ‘Convierte el número en texto

auxi2$ = ""

l = Len(auxi)

For i = l To 1 Step -1 ‘Va volcando las cifras en otro texto en orden inverso

ci$ = Mid(auxi, i, 1)

auxi2 = auxi2 + ci$

Next i

c = Val(auxi2$) ‘Convierte el nuevo texto en número

cifrainver = c

End Function