miércoles, 23 de abril de 2025

Diferencia de dos cubos igual a una suma

 Caso general

En los cálculos que publico diariamente uso dos funciones para averiguar si un número es suma de cubos o bien diferencia. No se me había ocurrido simultanear ambas propiedades y lo hago ahora.

¿Qué números enteros positivos son suma de dos cubos y simultáneamente diferencia de otros dos, siendo en ambos casos cubos enteros positivos?

Un ejemplo es el 152, que por una parte equivale a 3^3+5^3=27+125, y por otra a 6^3-4^3=216-64.

Con las publicaciones precedentes tenemos acceso a dos funciones que encuentran estas descomposiciones: SUMCUBOS y DIFCUBOS. Las copio a continuación:

Function sumcubos(n)
Dim k, a, m, b
Dim s$

s = "" ‘Contenedor de resultados
m = 0 ‘Contador de soluciones
a = n ^ (1 / 3) ‘Máximo cubo posible
For k = 1 To a
b = n - k ^ 3 ‘Segundo posible cubo
If escubo(b) And k <= b ^ (1 / 3) Then m = m + 1: s = s + " a=" + Str$(k) + " b=" + Str$(Int(b ^ (1 / 3) + 0.0001)) ‘Hay nueva solución
Next k ‘Si no hay solución devuelve “NO”
End Function

Usa 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

 

La segunda función es algo más complicada, porque la diferencia presenta otro condicionante, y es que la diferencia de cubos ha de ser divisor de N.

 Function difcubos$(n)
Dim k, a, t, m, p
Dim s$

s = "" ‘Contenedor de soluciones
m = 0 ‘Contador de soluciones
For k = 1 To n / 2 ‘La diferencia de bases es divisor de N
If n / k = n \ k Then ‘Criterio de divisibilidad
t = Sqr(n / k / 3) ‘Máximo cubo con esa diferencia
For a = 1 To t
If (a + k) ^ 3 - a ^ 3 = n Then m = m + 1: s = s + " # a=" + Str$(a) + " b=" + Str$(a + k) ‘Existe solución
Next a
End If
Next k
If s = "" Then difcubos = "NO" Else difcubos = ajusta(m) + " " + s
End Function

El que esta segunda función use también el “NO” para cuando no existe solución nos permite simultanear las dos condiciones:

 SUMCUBOS(N)<>”NO” AND DIFCUBOS(N)<>”NO”

 Usamos esta condición en un buscador y nos devolverá la lista de números enteros positivos que son simultáneamente suma y diferencia de dos cubos (también enteros positivos)

 


Están publicados en https://oeis.org/A225908, y es subsecuencia de https://oeis.org/A051347 En esas páginas se llama la atención sobre que estas propiedades permiten descomponer algunos cubos en suma de otros tres. Ya he comentado esta propiedad anteriormente en otras entradas. Por ejemplo, 18^3=16^3+12^3+2^3. Esta igualdad se extrae de los resultados del número 4104.

Si se usa la función TRESCUBOS (no se explica aquí porque usa otras funciones que alargarían esta entrada) con uno de los cubos mayores, se reproducirán algunos resultados. Por ejemplo, con 18^3, si lo descomponemos en suma de tres cubos, daría lugar a

18^3=15^3+6^3+9^3=16^3+6^3+2^3

Si pasamos restando algún sumando, obtendríamos algunos casos de los estudiados. Por ejemplo:

18^3-15^3=9^3+6^3

A continuación estudiaremos algunos casos y propiedades particulares.

Casos particulares de los cubos sumandos

Cubos consecutivos

Los dos cubos que se suman pueden ser consecutivos. Añadiendo algún parámetro a nuestra función se pueden encontrar esos casos particulares. No abundan. Estos son los inferiores a 10^5:

 

En ellos se ha de cumplir que N=(a+1)3+a3=2a3+3a2+3a+1, luego a será un divisor de N-1.

Por ejemplo. 68705-1 se descompone como 25*19*113, y, efectivamente, 32=25 es un divisor suyo, y es la base del cubo menor de la suma.

Cubos de N y N+2

Con el mismo procedimiento obtenemos los primeros casos en los que las bases de los cubos que se suman se diferencian en dos unidades.

Es sencillo demostrar que aquí la base del cubo menor ha de ser divisor de N-8, como ocurre con 16120, en el que (16120-8)/19=848

Cubos de base prima

Para finalizar, se adjuntan los tres primeros resultados para el caso en el que las bases de los cubos que se suman sean números primos. Se acumulan las exigencias y es normal que resulten pocos resultados.

 


 Versión en PARI

Para quienes deseen practicar con este lenguaje, se inserta a continuación un código que devuelve las soluciones entre1 y 5000. Es interesante estudiar el uso de vectores para devolver las soluciones:

 

sumadoscubos(n)=my(i=1,m,v=[0,0]);while(i<=n^(1/3),m=n-i^3;if(ispower(m,3)&&m<=i^3,v=[i,m^(1/3)]);i+=1);v

difcubos(n)=my(k,t,a,v=[0,0]);for(k=1,n,if(n%k==0,t=sqrt(n/k/3);for(a=1,t,if((a+k)^3-a^3==n,v=[a+k,a]))));v

for(m=1,5000,u=difcubos(m);t=sumadoscubos(m);if(u<>[0,0]&&t<>[0,0],print(m," Suma ",t," Diferencia ",u)))

 

Resultado:



 

 

 

 

No hay comentarios: