En la anterior entrada sobre este tema se usó la descomposición en factores primos de un número. Esto supone declarar los vectores primo() y expo() de forma global y puede resultar un poco técnico. En esta segunda entrada consideraré otras alternativas.
Si no te quieres complicar con
factores primos, puedes usar esta función, que te da las primeras soluciones y
resulta rápida:
Function
dospoten$(n)
Dim
i, p, q, a, b, c, x
Dim s$
s$ = ""
x = n
For p = 2 To 12 ‘Se buscan potencias de
exponentes del 2 al 12. ‘Esto se puede cambiar
a = Int(x ^ (1 / p)) + 1 ‘Posible raíz
p-nésima
For i = a To 10 * a
b = i ^ p – n ‘Se halla la diferencia con N
For q = 2 To 20
c = Int(b ^ (1 / q) + 0.000001) ‘Se
identifica como potencia
If c ^ q = b Then ‘Si todo va bien, se
publica
s$ = s$ + "# " + ajusta(i) + "^"
+ ajusta(p) + "-" + ajusta(c) + "^" + ajusta(q) ‘Si
no se cuenta con la función AJUSTA, se puede usar Str$
End
If
Next
q
Next
i
Next
p
If s
= "" Then s = "NO"
dospoten = s$ ‘Publica la lista de
diferencias de potencias
End Function
Con alguna limitación, es útil, y yo la uso en mis cálculos diarios. Puede que no llegue a alguna solución, pero suele funcionar bien.
Unos ejemplos:
60=8^2-2^2# 16^2-14^2# 4^3-2^2#
4^4-14^2# 2^6-2^2# 2^8-14^2
112=# 11^2-3^2# 12^2-2^5#
16^2-12^2# 29^2-27^2# 29^2-9^3# 29^2-3^6# 8^3-20^2# 4^4-12^2# 2^7-4^2# 2^7-2^4#
2^8-12^2# 2^9-20^2# 2^11-44^2
13# 7^2-6^2# 16^2-3^5# 17^3-70^2#
4^4-3^5# 2^8-3^5
Uso de la herramienta
CARTESIUS
Mi máquina de construir productos cartesianos condicionados también nos puede ayudar a encontrar diferencias de potencias dentro de un nivel elemental. En ella se puede exigir que las columnas a combinar sean potencias, lo que facilita su uso en esta cuestión. La puedes descargar desde
https://www.hojamat.es/sindecimales/combinatoria/herramientas/herrcomb.htm#cartesius
El problema es que la actualizo a
veces, pero no la versión publicada, pero aquí valdrá.
La programación de esta búsqueda
sería esta, concretada para el número 28:
xtotal=2
xt=1..100
xt=etiq(potencia)
Declara que se combinarán dos
columnas (X1 y X2)
En ellas se escribirán 100 datos
(pueden ser más a costa del tiempo de proceso)
Cada columna contendrá las
primeras potencias.
Se deberá cumplir que X1 menos X2
sea 28 (esto es un ejemplo)
Al pulsar sobre el botón Iniciar
se construirán las columnas de potencias:
En la siguiente página Producto
obtendremos las primeras diferencias de potencias que equivalen a 28.
Esto es un simple complemento,
para comprobar otros resultados y para conocer una posibilidad alternativa. No
tiene más importancia.
Esta sería la solución para 28
con las anteriores herramientas:
# 6^2-2^3# 8^2-6^2# 4^3-6^2#
8^3-22^2# 37^3-225^2# 37^3-15^4# 2^5-2^2# 2^6-6^2# 2^7-10^2# 2^9-22^2
Las soluciones de Cartesius están
contenidas en esta lista.
Uso del Buscador de Naturales
Mi herramienta Buscador de
Naturales posee la función POTENCIA, tanto de forma booleana, como True o False
como actuando sobre un parámetro. Esto nos permite plantear una búsqueda de
diferencia de potencias de forma sencilla. Basta condicionar N a que sea
potencia y después volverla a usar pero con parámetro N+K.
Lo vemos más claramente con el
número 24 como ejemplo:
POTENCIA: Busca los números que
son potencias
ES POTENCIA(N+24): La partícula
ES anuncia que se exigirá una condición complementaria mediante expresiones o
funciones. Aquí es que N+24 sea también potencia.
EVALUAR: Indica qué se escribirá
en la segunda columna. Aquí hemos pedido que sea N, una coma, y N+24
Puedes descargar esta herramienta
desde
https://www.hojamat.es/sindecimales/divisibilidad/herramientas/herrdiv.htm#buscador
No resulta muy lento. Le hemos
exigido tratar el 28 hasta un tope de 20000 y no ha tardado demasiado:
Coincide con anteriores planteamientos:
28
=2^5-2^2=6^2-2^3=2^6-6^2=2^7-10^2=2^9-22^2
Se han creado dos columnas que
después se pueden copiar en otra parte de Excel y añadirles detalles:
Despedida simplista
¿No queremos seguir con
algoritmos? Pues podemos construir una tabla de doble entrada en la que figuren
las potencias ordenadas tanto en filas como en columnas, y usar las búsquedas
de Excel para localizar el número deseado. Se podía comenzar el tema por aquí,
y el trabajo pesado que da puede justificar el pensar en algoritmos.
Aquí se pueden localizar algunos
de los ejemplos que se han usado. Los he destacado en rojo:





