martes, 25 de febrero de 2020

Suma y producto de cubo y otro tipo (1)



Muchas de las entradas de este blog surgen de los cálculos diarios que publico en Twitter (@Connumeros). El que sigue nos va a dar materia para más de una entrada.

El día 21/5/19 obtuve esta propiedad:

El número de fecha de hoy, 21519 se descompone en un producto de un cubo por un capicúa y también en una suma del mismo tipo:
21519=3^3×797
21519=12^3+19791

No sabía en ese momento si existirían muchos números que compartieran las dos expresiones N=p^3*q y N=r^3+s, y parece que sí, que son abundantes.

Para acotar la búsqueda, exigiremos que los cuatro números p, q, r y s sean enteros positivos. La exclusión del 0 evita casos triviales.

Al iniciar el estudio he pensado que el número que acompaña al cubo puede ser cuadrado o triangular, por ejemplo, en lugar de capicúa. Esto amplía el estudio y por eso es posible que se necesiten varias entradas.

Suma y producto de cubo y capicúa

La primera condición, N=p^3*q, permite desechar aquellos números N que no sean múltiplos de un cubo. Esto se logra fácilmente con la descomposición factorial y el estudio de los exponentes de los factores primos. El inconveniente es que en un blog como este se alargaría mucho la explicación del procedimiento para crear nuestra función FACTORES y la rutina SACAPRIMOS. Por eso, y no es nuevo en estas entradas, emprenderemos la búsqueda con medios más sencillos. El peligro estribaría en la lentitud, pero no es inconveniente en este caso. Con Excel se consiguen listas con una rapidez aceptable.

Comenzamos, como es usual en estas búsquedas, con la creación de una función, a la que llamaré CUBOYOTRO, que nos indique si un número N cumple los dos requisitos N=p^3*q y N=r^3+s. Su estructura nos va a permitir adaptarla a todos los casos que estudiemos, pues bastará sustituir la función ESCAPICUA (para el caso inicial) por ESCUAD, ESTRIANGULAR u otra. En cada tipo explicaremos estas funciones auxiliares. Comenzamos con los capicúas. La función recomendada es la siguiente:

Public Function cuboyotro$(n, k) ‘Añadimos un parámetro k por si deseamos cambiar cubo por otra potencia
Dim x, a, y, b, c
Dim s$


s$ = "" ‘Usamos un string para presentar bien los cuatro números p, q, r y s
a = n ^ (1 / k) ‘En este primer caso k valdrá 3. La variable a es el tope de búsqueda
For x = 1 To a
c = n - x ^ k ‘Se resta del número la potencia (en el primer ejemplo, un cubo)
If escapicua(c) And c > 10 Then ‘Más adelante se cambiará ESCAPICUA
For y = 2 To a ‘En esta parte ya se ha cumplido la segunda condición N=r^3+s
If n Mod y ^ k = 0 Then ‘Para la primera condición p^3 ha de ser un divisor de n
b = n / y ^ k
If escapicua(b) and b>10 Then ‘Si el cociente es capicúa, se publica la solución
s$ = " C1 " + Str$(x) + " O1 " + Str$(c) + " C2 " + Str$(y) + " O2 " + Str$(b)
‘El string nos presenta los cubos C1 y C2 y sus compañeros O1 y O2.Puede haber más soluciones.
End If
End If
Next y
End If
Next x
If s$ = "" Then s$ = "NO" ‘Asignamos un “NO” al caso sin solución
cuboyotro = s$
End Function

Hay que advertir algún detalle sobre esta función.

La decisión de evaluar en primer lugar la segunda condición y después la primera no ha sido deliberada, y de hecho, poco eficiente, pues si se  cambia el orden se incrementa la velocidad de respuesta de la función. Como resulta rápida así, no se ha corregido y lo dejamos como ejercicio.

Este esquema es la base para otras búsquedas. Ya se ha destacado que con un cambio de ESCAPICUA por otra función se podrían abordar otros casos. Igualmente, aunque en lo que sigue haremos k=3 para buscar cubos, se deja abierta la posibilidad de aumentar el exponente.

La función ESCAPICUA se inserta en el Anexo del final de esta entrada. La costumbre es considerar capicúas los números de una cifra, pero aquí no nos interesa esta posibilidad, pues aparecen casos sin interés. Exigiremos que sean mayores que 10, como puedes comprobar en el listado de la función.

Los primeros números con esta propiedad son


Junto a cada uno se presentan los cubos C1 y C2 y el otro componente, en este caso capicúa, en O1 y O2.

Por ejemplo, 2176=4^3+2112=2^3*272, dos cubos y dos capicúas.

En PARI

Al tener que cumplir varias condiciones, el listado para PARI resulta algo extenso, pero es bastante rápido en su ejecución.

maxexpo(n) = s=1; f=factor(n); for(i=1, matsize(f)[1], t=f[i,2]; if(t>>s, s=t)); s
palind(n)=n==eval(concat(Vecrev(Str(n))))
condi1(n)= c=0; if(maxexpo(n)>=3,  a=n^(1/3); for(x=2, a, if(n%x^3==0,b=n/x^3;if(palind(b)&&b>=10,c=x))));c
condi2(n)= c=0; a=n^(1/3); for(x=2, a, b=n-x^3;if(palind(b)&&b>=10,c=x));c
for(y=2,20000, if(condi1(y)&&condi2(y),print1(y,", ")))

Con él podemos reproducir y ampliar la lista de arriba:

528, 704, 888, 1128, 1208, 1375, 1408, 1616, 1696, 1856, 2176, 2424, 2727, 2904, 2984, 3064, 3552, 3632, 3773, 3952, 4280, 4347, 4440, 4520, 4752, 5488, 5568, 5736, 5994, 6296, 6336, 6464, 6784, 7352, 7752, 8181, 8384, 8888, 10071, 10944, 11000, 11264, 11319, 12224, 12798, 13635, 13875, 14168, 14641, 15928, 16128, 16362, 16375, 17172, 18048, 18656, 19008, 19536, 19629, 19899,…

Hay que recordar que todos ellos son múltiplos de un cubo con base no trivial  y, por tanto, todos son compuestos. Entre ellos aparecen casos particulares interesantes. Por ejemplo:

Números del tipo p^3*11 o p^3*101. En estos dos casos y otros similares, el capicúa correspondiente al producto es un número primo, como ocurre en 704=4^3*11=2^3+696.

Caso del 14641: Como equivale a 11^4, su desarrollo sería 11^3*11. Hay que esperar que pertenezcan a este listado potencias de primos, aunque sin buscarlos no se puede asegurar. Por ejemplo, 101^4 cumple la primera condición (producto), pero no es suma de cubo y capicúa. El siguiente es 40353607, que es potencia de primo (40353607=7^9) y se descompone en producto de cubo y capicúa (40353607=49^3*343) y en suma de cubo y capicúa (40353607=334^3+3093903). Hasta una cota de 8*10^7 ya no hay más casos.

El número 14641 es capicúa. Podríamos preguntarnos si existen más capicúas en la sucesión. En la primera tabla hemos visto algún capicúa. Los primeros son: 888, 3773, 6336, 8888, 14641, 80008, 88088,…

Por ejemplo, 3773 es capicúa, y equivale a 11^3+2442 y a 7^3*11.
Igualmente, el capicúa 6336 es igual a 11^3+5005 y a 4^3*99.

Finalmente, destacamos el número 74088, que es el cubo de 42, y también coincide con la suma de otro cubo y un capicúa, 35^3+31213, y también con un producto similar, 6^3*343. Esto es posible por ser 343 capicúa y cubo de 7.
Se podría buscar más casos particulares, pero es preferible pasar a otras estructuras, que dejaremos para la siguiente entrada.

ANEXO

Código de la función ESCAPICUA

Public Function escapicua(n) As Boolean
Dim l, i, k
Dim c As Boolean
Dim auxi$,nn$

nn$ =Str$(n)

auxi= Right(nn$, Len(nn$) - 1)
l = Len(auxi)
c=True
If l >1 Then
c = True
i = 1
k = Int(l / 2)
While i <= k And c
  If Mid(auxi, i, 1) <> Mid(auxi, l - i + 1, 1) Then c = False
  i = i + 1
  Wend
End If
escapicua = c
End Function


No hay comentarios: