lunes, 22 de diciembre de 2025

Divisorial

Llamaremos divisorial de un número al producto de sus divisores, (según OEIS WIKI, sin revisar). Su cálculo es muy sencillo, porque los divisores de N se presentan por pares cuyo producto es N. Por ejemplo, en 45 se da que 45*1=15*3=9*5=45. El producto total, o divisorial, será 45^3=91125.

Si TAU(N) es el número de sus divisores, se tendrá que el número de pares será TAU(N)/2 si TAU es par y (TAU(N)+1)/2 si es impar, porque este último caso se dará en los cuadrados, y la RAIZ(N) se contaría repetida. Por ejemplo, el divisorial de 36 será 36*18*12*9*6*4*3*2*1=10077696, pero si lo ordenamos por pares, la raíz cuadrada estaría repetida:


Nos resultaría un producto seis veces mayor. Habría que suprimir el 6 sobrante, con lo que resultaría ese 6 multiplicado por los pares restantes, que forman TAU(N). Tendríamos 6*36*36*36*36=369/2

Por tanto, en el caso par y en el caso impar la fórmula adecuada es

Hemos seguido la nomenclatura usual de π(n) para el divisorial.

En el caso de 45 nos daría 456/2=453=91125

En el caso de 36 existen 9 divisores, luego tendríamos 369/2= 10077696.

Los resultados del divisorial no se repiten, es decir, a números distintos les corresponden divisoriales distintos (ver la demostración de T.D. Noe en

http://www.sspectra.com/math/DivisorProduct.pdf)

Encontrar π(n) sin usar la función TAU es muy simple. Basta recorrer los números menores o iguales a N y multiplicar tan solo los divisores. En la práctica solo hay que llegar a N/2 y después multiplicar por N. En Visual Basic puede quedar así:

Function proddivi(n)

Dim p, i

 

p = n ‘Comenzamos el producto con n

For i = 2 To n / 2

If n / i = n \ i Then p = p * I ‘Si es divisor, se multiplica

Next i

proddivi = p

End Function

Con esta función podemos crear la primera tabla de divisoriales:

 


Están publicados en https://oeis.org/A007955

En el lenguaje PARI está implementada la función TAU con el nombre de numdiv, luego el divisorial se puede encontrar con

π(n)=n^(numdiv(n)/2)

En la imagen se ha pedido el valor de los 50 primeros:

 Texto

El contenido generado por IA puede ser incorrecto.

En color azul figura la instrucción en PARI usada.

Casos particulares

N es primo

En ese caso TAU(N)=2, luego π(n)=n2/2=n

Es lógico, porque el único producto de divisores es 1*n y el divisorial de n coincide con el número n

Potencia de primo

Si N=pk, TAU(N)=k+1, porque los divisores serán (1, p, p2, … pk) , luego el divisorial será p(k+1)/2.

Entre ellos, los divisoriales de cubos de primos serán cuadrados.

Semiprimo no cuadrado

Si N=p*q, con p≠q, poseerá cuatro divisores, 1, p, q y pq, luego TAU(N)=4 y su producto de divisores π(n)=n4/2=n2. Lo vemos en el listado anterior con 6 y 10.

Resultado cuadrado

Si el divisorial es una potencia, encontraremos muchos de ellos que sean cuadrados. Ya hemos visto que aparecen en los cubos de primos y en semiprimos no cuadrados, pero existen más. Estos son los primeros:

 

Tabla

El contenido generado por IA puede ser incorrecto.

Entre ellos están los esfénicos, números del tipo p*q*r con los tres primos distintos. En ellos los divisores son: 1, p, q, r, pq, pr, rq y pqr, es decir ocho divisores, luego el producto de divisores será una potencia cuarta, también cuadrada.

En  https://oeis.org/A048943 puedes consultar un razonamiento más completo.

Resultado cúbico

Es fácil razonar que las quintas potencias de un primo poseen un divisorial que será un cubo, ya que π(n)=n(5+1)/2=n3

También producen un cubo los números, como el 12, que tienen la forma pq2, pues TAU(n)=(1+1)(2+1)=6, luego π(n)=n6/2=n3

Estos son los primeros:

Tabla

El contenido generado por IA puede ser incorrecto.

Puedes buscar más casos particulares, que no serán complicados de razonar.

jueves, 11 de diciembre de 2025

Pandigitales inesperados

Hay varias acepciones de la palabra pandigital. Aquí nos referiremos a los pandigitales completos sin repetición, es decir, que consideraremos pandigitales a aquellos números de 10 cifras en las que figuren todas del 0 al 9 en cualquier orden y sin repetir ninguna. No se admite cero inicial. Excel lo suele suprimir, pero habrá que tener cuidado en otros lenguajes de programación.

Con esta definición es sencillo calcular por Combinatoria cuantos pandigitales de este tipo puede haber. Inténtalo.

Función para detectar pandigitales

Para esta detección se crea un vector de 10 elementos, ci(10), y en cada uno se cuentan las apariciones de una cifra determinada del número. Para que sea pandigital, todos los elementos han de ser iguales a 1. En cualquier otro caso, no lo será.

Función pandigital

Public Function pandigital(a) As Boolean

 

'han de estar todas las cifras sin repetición y sin cero inicial

 

Dim ci(10)’ Contenedor de cifras

Dim i

Dim t As Boolean

 

t = True ‘En principio suponemos que es pandigital

n = numcifras(a) ‘Se puede conseguir también sumando 1 a su logaritmo decimal

If n <> 10 Then pandigital = False: Exit Function ‘No tiene diez cifras

For i = 0 To 9: ci(i) = 0: Next I ‘Contadores a cero

For i = 1 To n

ci(cifra(a, i)) = ci(cifra(a, i)) + 1’ Se cargan las cifras encontradas

If ci(cifra(a, i)) > 1 Then pandigital = False: Exit Function ‘Si hay repetidas, no es pandigital

Next i

s = 0

For i = 0 To 9

If ci(i) = 0 Then t = False ‘Si falta una cifra, no es pandigital

Next i

pandigital = t ‘Devuelve VERDADERO o FALSO

End Function

 

Resultados inesperados

 

La idea de hoy es buscar pandigitales en distintas circunstancias u operaciones. Predominarán productos y potencias, como ejemplos favorables a encontrar pandigitales, pero sólo serán ejemplos de uso para facilitar a los lectores la búsqueda en otros casos similares. Se pueden abordar muchos.

 

Vemos algunos ejemplos con nuestro buscador:

 

Multiplicar un número por otro relacionado

 

A partir de este ejemplo hay que tener en cuenta que los pandigitales están comprendidos entre 10^9=1000000000 y 10^10=10000000000. Sería inútil buscar fuera de este intervalo.

 

Multiplicamos N por N+1

 

En este primer ejemplo, podemos comenzar la búsqueda por RAIZ(10^9)-1, para que N(N+1) entre en ese intervalo. La salida puede ser RAIZ(10^10)+1. Esto no es demasiado importante. Se puede ampliar algo el rango. Nuestro buscador nos da 52 soluciones. Estas son las primeras:



No esperaba tantos resultados. Se ve que el producto de consecutivos tiene características favorables. He probado con N(N+2) y resultan 34. Con N(N+3), 99. Como era de esperar, es algo que resulta aleatorio en la práctica. Con otras diferencias se obtienen números similares.

 

Un número multiplicado por su doble produce resultados parecidos.

 

Uso de potencias

 

Cuadrado de N

 

Si lo reducimos a su cuadrado, es decir un número por sí mismo, está publicado en https://oeis.org/A054038 con otros planteamientos, pero coincide mi buscador para pandigitales sin repetición, que resultan ser 87.

 

Estos son los primeros:

 


Podíamos operar N con N2, a ver qué ocurre.

Con suma aparecen bastantes resultados. Uno es:

40508+40508^2=1640938572

Con cubos no he obtenido ningún pandigital.

Otras potencias

Para las potencias es preferible usar el lenguaje PARI, porque maneja las cifras con más soltura que Excel.

 

El criterio para saber si un número es pandigital puede ser este:

 

vecsort(digits(n))==[0..9] &&n>=10^9

 

Se interpreta fácilmente: se ordenan los dígitos de n en un vector y ha de coincidir con [0..9]. Además, no puede tener cero inicial, ha de ser mayor o igual que 109.

 

Con estas líneas de PARI podemos investigar potencias. Están adaptadas a cuadrados para probar, escribiendo k=2. Cambiando k se pueden investigar otras potencias.

pandigital(n)=vecsort(digits(n))==[0..9]&&n>=10^9

k=2

a=truncate(10^(9/k))

b=truncate(10^(10/k))

for(i=a,b,m=i^k;if(pandigital(m),print(i," , ",m)))

Este es un recorte de pantalla para k=2 en la web de PARI:


Observamos que coincide con el resultado de Excel.

No he encontrado pandigitales en los exponentes del 3 al 10, pero nos ha servido para iniciar el uso de PARI.

Otras búsquedas

Número por su simétrico en cifras

Aquí sí tendremos éxito. En Excel uso mi función CIFRAINVER y en PARI mi función REVERSE. Elijo este porque lo tengo desarrollado más brevemente. Podríamos usar lo siguiente:

pandigital(n)=vecsort(digits(n))==[0..9]&&n>=10^9

reverse(n)=eval(concat(Vecrev(Str(n))))

a=2

b=1000

for(i=a,b,m=i*reverse(i);if(pandigital(m),print(i," , ",m)))

Definimos pandigital y reverse y después multiplicamos el número por su reverso:



Si multiplicas cualquier número de la primera columna por su simétrico, obtendrás el pandigital de la segunda.

Otros ejemplos sin desarrollar

Un número multiplicado por su doble:



Por ejemplo. 22887*45774=1047629538

Cuadrado de N menos N



Así, 44028^2-44028=1938420756

Todos terminarán en 0, 2 o 6.

Y hasta aquí llega el tema. Quedan muchas posibilidades, e incluso eligiendo las primeras cifras de un número real, pero aquí sólo se estudian los enteros.

 

miércoles, 3 de diciembre de 2025

Un número como diferencia entre potencias (2)

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)

ES x1-x2=28

 

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:


Las condiciones han sido:

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: