miércoles, 28 de junio de 2023

En el punto medio de dispares

 ¿Qué números son promedio entre su cuadrado más cercano y el triangular también más cercano? Es una pregunta a la que no es difícil responder con las herramientas que tenemos a nuestra disposición, pero que requiere un cierto cuidado a la hora de plantear un algoritmo. Veremos más adelante las dificultades que se pueden presentar. Toda la entrada se referirá a la posible estructura de ese algoritmo y sus problemas. No abordaremos apenas estudios teóricos.

En primer lugar estudiaremos técnicas que nos sirvan para todos los casos, sean cuadrado con triangular, cubo con cuadrado o primo con oblongo, para después descender a detalles en cada tipo de número. Para estas búsquedas llevamos tiempo usando las funciones ESCUAD, ESTRIANGULAR, ESOBLONGO, ESCUBO y otras similares. Puedes encontrarlas todas usando Buscar en el blog.

Estas son algunas de ellas:

Public Function escuad(n) As Boolean
If n < 0 Then
escuad = False
Else
If n = Int(Sqr(n)) ^ 2 Then escuad = True Else escuad = False
End If
End function


Public function estriangular(n) as boolean
dim a

a = Int(sqr(8*n+1))
if a*a=8*n+1 then estriangular = true else estriangular = false
end function

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

Con cualquiera de ellas se pueden construir las funciones PROXIMO y ANTERIOR, en las que un parámetro tipo decidirá si se busca un cubo o un oblongo, o preferentemente, cambiando una línea de código para sustituir la búsqueda de un tipo por la de otro. Lo explicamos con un ejemplo:

La siguiente versión de PROXIMO busca el cuadrado más cercano entre los mayores que un número

Function proximo(a) As Long
Dim p, prim As Long
Dim sale As Boolean

p = a + 1: sale = False: prim = 0
While Not sale
If escuad(p) Then prim = p: sale = True
p = p + 1
Wend
proximo = prim
End Function

Por ejemplo, te dará que PROXIMO(78)=81

Si sustituimos ESCUAD por otra función, nos servirá el mismo código para buscar triangulares, cubos o pentagonales. En general, se dará por supuesto que cambiaremos esa línea de código para pasar de un tipo a otro.

De igual forma se puede construir la función ANTERIOR:

Function anterior(a) As Long
Dim p, prim As Long
Dim sale As Boolean

p = a -1: sale = False: prim = 0
While Not sale and p>0
If escuad(p) Then prim = p: sale = True
p = p - 1
Wend
anterior = prim
End Function

Por ejemplo, en este caso para cuadrados te dará ANTERIOR(15)=9

Caso de cuadrados y triangulares

Candidatos a ser los más próximos

 La primera idea que se nos ocurre es la de buscar el cuadrado más próximo por la izquierda y también por la derecha, y quedarnos con el más próximo. No hay posibilidad de “empate”, porque serían dos cuadrados consecutivos, n2 y (n+1)2, y entre ellos siempre existe una diferencia impar, 2n+1, por lo que no existirá un número en el punto medio. El cuadrado más cercano siempre será único.

Por contra, entre dos triangulares consecutivos si existe esa posibilidad de empate. Por ejemplo, 32 está comprendido entre los triangulares 28 y 36, y a 4 unidades de cada uno de ellos, por lo que el título de “más cercano” sirve para cualquiera de ellos. Vemos cuándo ocurre esto:

Sean dos triangulares consecutivos n(n-1)/2 y n(n+1)/2. Su diferencia será n, luego si este valor es par, tendremos dos triangulares cercanos a un número a la misma distancia. Entre 1 y 3, el punto medio es 2, su promedio. Entre 6 y 10, el 8, entre 15 y 21, el 18, y así con todos los ejemplos similares. La consecuencia es que para triangular más cercano a un número dado tendremos dos candidatos. Por cierto, ese número central es fácil ver que será el doble de un cuadrado, 2, 8, 18, 32,...

Ese empate entre triangulares cercanos habrá que tenerlo en cuenta en el algoritmo. Su núcleo podrá ser el siguiente:

for i=2 to 1000
c=0 ‘Esta variable controlará el posible empate entre triangulares
a=anteriorcuad(i) 'Cuadrado menor
b=proximotriang(i) 'Triangular mayor
m=anteriortriang(i) 'Triangular menor
n=proximocuad(i) 'Cuadrado mayor
if i-a>n-i then a=n 'Se queda "a" como cuadrado más cercano tomando el valor de n
if b-i>i-m then b=m 'El triangular "b" es el más cercano, quizás con el valor de m
if b-i=i-m then ‘Hay empate
If escuad(2 * i - m) Then a = 2 * i - m: b = m: c = 1
If escuad(2 * i - b) Then a = 2 * i - b: c = 1 ' El valor c=1 indica que se ha resuelto el empate
end ifif i=(a+b)/2 or c=1 then ‘Se han encontrado los más próximos o empate resuelto
escribe(i, a, b)
next i


Alguna parte de este planteamiento se ha escrito en pseudocódigo para mayor claridad (anteriorcuad, proximocuad,...). Hemos incorporado estas líneas a un buscador con el siguiente resultado:

2, 5, 23, 32, 47, 52, 65, 86, 140, 161, 170, 193, 203, 228, 266, 312, 356, 389, 403, 438, 453, 490, 545, 610, 671, 716, 735, 782, 802, 851,...

Estos son los primeros números naturales que se encuentran en el punto medio entre el cuadrado y el triangular más cercano. En forma de tabla, podemos añadir en una segunda columna el cuadrado y el triangular más cercanos, de los que es promedio el número. No tienen que aparecer en este orden:

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

Alternativa para este caso

En este caso de cuadrados y triangulares no son necesarias las funciones POSTERIOR y ANTERIOR. Para los cuadrados bastará con elegir, para un número N los siguientes, expresados con lenguaje de Excel o Calc:

A=(ENTERO(RAIZ(N)))^2   como anterior y  B=(1+ENTERO(RAIZ(N)))^2 como posterior

Para los triangulares es un poco más complicado. Las siguientes expresiones son el resultado de resolver la ecuación x(x+1)/2=N.

X=ENTERO((-1+RAIZ(8*N+1))/2), que es el “falso orden” triangular de N

A=X(X+1)/2 como anterior y B=(X+1)(X+2) como posterior.

 Con estas fórmulas se puede construir un esquema de hoja de cálculo que nos indique, con un solo golpe de vista, qué cuadrados o triangulares son los más cercanos, así como si existe empate o no. En la imagen siguiente se ha analizado el número 456 con las fórmulas explicadas, resultando 441 y 465 como los candidatos. Como sus diferencias, 15 y 9, no son iguales, 456 no cumpliría lo exigido.

 


 

 Caso de cuadrados y cubos

 En este caso podemos usar el procedimiento general, basado en PROXIMO y ANTERIOR, pero usando ESCUBO en lugar de ESTRIANGULAR.

Vimos que en los cuadrados no existía posibilidad de empate en las distancias por la izquierda o derecha del número. Igual ocurrirá con los cubos, porque uno será par y otro impar.

Aplicamos, pues, el procedimiento general sin tener en cuenta los empates:

 


También estos están ya publicados:

 A233075              Numbers that are midway between the nearest square and the nearest cube.           

6, 26, 123, 206, 352, 498, 1012, 1350, 1746, 2203, 2724, 3428, 4977, 5804, 6874, 8050, 9335, 10732, 12244, 13874, 17500, 19782, 21928, 24519, 26948, 29860, 32946, 35829, 39254, 42862, 50639, 54814, 59184, 63752, 69045, 74036, 79234, 85224, 90863, 97340,

Alternativa para este caso

 Vimos que PROXIMO y ANTERIOR se podían sustituir, en el caso de los cuadrados, por A=(ENTERO(RAIZ(N)))^2   como anterior y  B=(1+ENTERO(RAIZ(N)))^2 como posterior.

Los cubos admiten un planteamiento similar

A=(ENTERO(N^(1/3)))^3


B=(1+ENTERO(N^(1/3)))^3

En la imagen observamos con el número 280 que no hay posibilidad de empate.


Promedios entre primos y cuadrados

 Aquí sí existe la posibilidad de empate entre primos, por lo que habrá que aplicar el algoritmo general presentado más arriba. Los cuadrados han de ser impares, para que las diferencias cuadrado-primo sean pares y admitan un punto medio.

Como vemos en la tabla resultante, la abundancia de soluciones les resta interés:

 

observan diferencias de valor 2, 4, 6, 8,…siendo bastante frecuentes las primeras, en las que el número primo es del tipo n2+2 o n2-2. Se podría hacer un estudio para estos primeros valores, pero queda para otra ocasión.


Esta entrada da fin al curso 2022-23. En septiembre, si el ánimo acompaña, iniciaremos uno nuevo.

 

 

lunes, 19 de junio de 2023

Sumas con anagramáticos

En esta entrada jugaremos un poco con números que comparten cifras y están relacionados mediante algunas operaciones entre ellos.

Sumandos anagramáticos

Comenzamos con aquellos números que son el total de una suma de dos números anagramáticos con ellos, es decir, los tres datos han de compartir cifras y con la misma frecuencia. Aunque están publicados casos similares, aquí exigiremos que los dos sumandos anagramáticos tengan el mismo número de cifras, como en

954=459+495

5238=2385+2853

No tendremos en cuenta ningún sumando que comience por cero.

Para encontrarlos diseñaremos una función de VBasic para Excel y Calc. En ella se usará la función cifras_identicas, cuyo código puedes encontrar en

https://hojaynumeros.blogspot.com/2020/11/consecutivos-con-las-mismas-cifras.html

También usamos nuestra función numcifras

(ver https://hojaynumeros.blogspot.com/2018/04/cancelaciones-anomalas-12.html)

Function dobleanagram$(n)

Dim a, m

Dim s$

s$ = "" ‘Contenedor de sumandos

m = numcifras(n) ‘Cuenta las cifras

For a = 10 ^ (m - 1) To n / 2 ‘Busca con el mismo número de cifras

If cifras_identicas(a, n) And cifras_identicas(n - a, n) Then s = s + " # " + Str$(a) + "+" + Str$(n - a) ‘Solución

Next a

dobleanagram = s

End Function

 Con esta función obtenemos los primeros resultados:




Llama la atención, y era algo esperable, que las soluciones se pueden agrupar en familias, como 954, 9045, 9504, 9540, 9954…Es fácil ver que con un simple cambio se reproducen resultados conocidos. El arrastre de cifras en las sumas influirá en que aparezcan más o menos familias.

Todos los resultados de este problema han de ser múltiplos de 9. En efecto, si los dos sumandos poseen las mismas cifras, serán también iguales sus restos módulo 9, con lo que el total tendría como resto su suma, y al tener las mismas cifras, la única posibilidad es que esos restos sean los tres nulos.

Un resultado similar está publicado en https://oeis.org/A121969, pero ahí se admiten números que comiencen por cero. Basta cambiar una línea en la función para obtener estos resultados, pero no merece la pena.

Anagramático más sus cifras

Otro caso relevante es el de un número igual a un anagramático con él sumado con sus cifras. Tiene un cierto parecido con el caso anterior, porque, en realidad, se usan las mismas cifras, pero aquí están como sumandos separados. Es la situación opuesta a la de los autonúmeros, que no admiten ninguna descomposición de este tipo

(ver https://hojaynumeros.blogspot.com/2015/03/autonumeros-1.html)

Existe una forma muy sencilla de resolver este caso, y es restarle al número sus propias cifras, y ver si la diferencia es anagramática con el total. Para las búsquedas necesitaremos otra función nuestra, sumacifras(n,k), que suma las cifras de n elevadas previamente al exponente k. Esta función la puedes encontrar en el enlace del párrafo anterior.

Para este caso y los siguientes usaremos esta otra función:

Function autoanagram$(n, k)

Dim a, m

Dim s$

s = ""

m = numcifras(n)

a = n - sumacifras(n, k) ‘Al número le restamos potencias de sus cifras

If cifras_identicas(n, a) Then s = s + " # " + Str$(a) ‘Otra nueva solución

autoanagram = s

End Function

Si la usamos con el parámetro k igual a 1, obtendremos las primeras soluciones:


 Puedes comprobar cualquiera de la lista:

810=801+8+0+1

1953=1935+1+9+3+5

Aquí también, y por la misma razón, los dos números implicados han de ser múltiplos de 9.

Estos números sí están publicados, con el mismo planteamiento nuestro, en https://oeis.org/A248209

En la página enlazada puedes estudiar los códigos PARI que contiene. El segundo es similar al usado aquí. No hemos acudido a este lenguaje porque la hoja de cálculo suele ser rápida en estos casos. Tampoco hemos exigido que las soluciones sean múltiplos de 9 por la misma razón. No suelen ser búsquedas muy lentas.

Otros casos con potencias

Como sumacifras(n;k) admite potencias, es sencillo ampliar la búsqueda a los casos en los que las cifras estén elevadas al cuadrado, cubo o cualquier otra potencia.

Cifras al cuadrado

Si tomamos k=2 en sumacifras dentro de la función autoanagram, resultarán parejas de anagramáticos que se diferencien en la suma de los cuadrados de sus cifras.

Aquí los sumandos no tienen las mismas cifras, por lo que las soluciones no han de ser múltiplos de 9, pero sí lo tiene que ser la suma de los cuadrados de las cifras, para conseguir un par de anagramáticos. Ejemplos:

271=217+22+12+72, donde la suma de cuadrados es 54, múltiplo de 9.

2450=2405+22+42+02+52, con suma de cuadrados igual a 45.

 

Cifras al cubo

Para k=3 resultan:

Por ejemplo:

1533=1353+13+33+53+33=1353+1+27+125+27=1353+180

 

Otras potencias

K=4


3211=3112+34+14+14+24=3112+99

K=5


14310=13041+15+35+05+45+15=13041+1+243+0+1024+1=13041+1269

Dejamos aquí las potencias de cifras.

 

Anagramáticos con producto de cifras

Podemos plantearnos pares de anagramáticos que se diferencien en el producto de sus cifras. Usaremos nuestra función producifras, que es similar a sumacifras (ver https://hojaynumeros.blogspot.com/2018/09/permutacion-de-cifras-al-sumar-su.html). En este enlace puedes leer unos resultados más exigentes que los propuestos aquí, pues no basta con que los pares sean anagramáticos, sino que han de ser también simétricos. En las búsquedas hay que eliminar los números en los que el producto de las cifras sea cero, pues aparecerían muchos casos triviales. En nuestro caso obtenemos estos pares:


Por ejemplo, 1631=1613+1*6*1*3=1613+18

Aquí también el producto de cifras ha de ser múltiplo de 9, porque el par de anagramáticos comparte el mismo resto módulo 9. Significa que una cifra ha de ser 9, o bien, que figuren 3 o el 6 repetidos o estar presentes ambos. Recorriendo la tabla se comprueba.

 

 

jueves, 8 de junio de 2023

Generación de primos sumando cuadrados y otros (2)

En la anterior entrada generamos sucesiones de primos en la que cada término era el menor primo con diferencia cuadrada respecto al anterior. De forma más breve realizaremos un recorrido con otros casos que tengan otro carácter.

Triangulares

En el caso de cuadrados usábamos la función PRIMSALTO (ver entrada anterior del blog).

Ahora sustituimos en la función PRIMSALTO la función ESCUAD por la función ESTRIANGULAR, y elegimos el 2 como primo de inicio. Con ello encontraremos los primeros primos que posean una diferencia triangular con el anterior, siendo cada uno el mínimo con esa propiedad.

Obtenemos:

Aquí lo interesante es que todas las diferencias, salvo la primera, han de ser pares, por lo que los órdenes de las mismas han de pertenecer a uno de los tipos 4k o 4k-1. Es fácil razonarlo a partir de la expresión n(n+1)/2.

Con este inicio del primo 2, están publicados en

https://oeis.org/A275030

Ocurre con estos primos algo similar a lo que se observaba en el caso de cuadrados, y es que si se alcanza un primo del tipo 6n+5, todos sus consecutivos comparten ese mismo tipo. Lo puedes comprobar en el caso de 97, que hemos elegido al azar:


A partir del 137 todos son del tipo 6n+5. Se puede razonar estudiando seis casos. En primer lugar distinguiremos entre triangulares de orden 4k o de orden 4k-1 (ver párrafos anteriores) y dentro de ellos, que k sea del tipo 3m, 3m+1 o 3m-1. Lo desarrollamos suponiendo que partimos de un primo del tipo 6n+5 y llamamos T al triangular que se suma:

Primer caso T=2k(4k+1)=8k2+2k

6n+5+T=6n+5+8k2+2k

Si k=3m T es múltiplo de 6, luego sigue la forma 6n+5

Si k=3m+1. T=8(3m+1)2+2(3m+1)=72m2+48m+8+6m+2 que da resto  4 módulo 6, luego pasa al tipo 6n+3, que no es primo. No nos vale.

Si k=3m-1  T=8(3m-1)2+2(3m-1)=72m2-48m+8+6m-2 múltiplo de 6, luego respeta el 6n+5

Segundo caso    T=2k(4k-1)=8k2-2k

Si k=3m es T múltiplo de 6 y respeta el 6n+5

Si k=3m+1 8(3m+1)2-2(3m+1)=72m2+48m+8-6m-2, múltiplo de 6 y respeta el tipo 6n+5

Si k=3m-1  8(3m-1)2-2(3m-1)=72m2-48m+8-6m+2 resto 4 y no resulta primo

O no son válidos los triangulares, porque den resto 4 y convertirían 6n+5 en 6n’+9, no primo o bien se suma un múltiplo de 6 y sigue 6n+5.

Queda, pues, comprobado que al llegar a un primo de ese tipo, se conserva ese carácter.

Primos iniciales, sin antecedentes

Procediendo de forma similar al caso de los cuadrados, descubrimos que estos primos no tienen antecedentes:

3, 5, 7, 11, 17, 19, 23, 31, 37, 41, 43, 47, 59, 61, 67, 71, 73, 79, 83, 97, 101, 103, 109, 113, 127, 131, 139, 151, 157, 163, 167, 179, 181, 191, 193, 197, 199, 211, 223, 229, 241, 251, 263, 269, 271

No debemos confundirnos. En el listado parece que 11 es antecedente de 17, pues su diferencia es el triangular 6, pero la existencia del intermedio 13 invalida la idea.

Primos consecutivos

También en el caso de saltos triangulares se observan primos consecutivos. Estos son los primeros:

23, 29

31, 37

47, 53

53, 59

61, 67

73, 79

83, 89

131, 137

139, 149

151, 157

157, 163

167, 173

173, 179

181, 191

Con cubos

Procediendo de igual forma que en los tipos anteriores obtenemos:

Están publicados en https://oeis.org/A076201, y no presentan, aparentemente, propiedades de interés.

Con oblongos

Al ser los oblongos números pares que son doble de un triangular (son del tipo n(n+1)), se merecen un repaso. Con ellos no se puede iniciar con el primo 2. Estos son los primeros conseguidos con inicio 3:

 


Con oblongos, el tipo de primo que perdura es el 6n+1. En la tabla comprobamos que este hecho comienza en el 7.

Si llamo O al oblongo (da igual su orden, porque siempre es par) tendremos:

6n+1+O = 6n+1+k(k+1)

Si k=3m, 6n+1+(3m)(3m+1) sigue el tipo 6n+1 pues el producto es múltiplo de 6

Si k=3m+1. 6n+1+k(k+1)=6n+1+(3m+1)(3m+2) sería no válido, por ser la suma múltiplo de 3

Si k=3m-1, 6n+1+k(k+1)=6n+1+(3m-1)(3m) sería idéntico al primer caso.

Así que los saltos válidos respetan el tipo 6n+1

Siguiendo un proceder de este blog, cuando se tratan varios tipos de números, al avanzar se prescinde de algunos detalles, para no cansar y también para dar oportunidad a los lectores que deseen explorar por su cuenta. Así que aquí dejamos el tema.

lunes, 29 de mayo de 2023

Generación de primos sumando cuadrados y otros (1)

En mis exploraciones por la página OEIS me he encontrado con una sucesión de primos en la que a cada término le sigue el menor primo cuya diferencia con el anterior es un cuadrado (https://oeis.org/A073609). He pensado en ampliar el tema a diferencias de otro tipo, no cuadrados, para descubrir algunas posibles propiedades.

La sucesión es claramente dependiente de su inicio, que en este caso es el 2, pero para cualquier primo con que iniciemos, producirá un siguiente primo único, diferente a estos o coincidente. Los términos publicados son los siguientes, con inicio en 2:

2, 3, 7, 11, 47, 83, 227, 263, 587, 911, 947, 983, 1019, 1163, 1307, 1451, 1487, 1523, 1559, 2459, 3359, 4259, 4583, 5483, 5519, 5843, 5879, 6203, 6779, 7103, 7247, 7283, 7607, 7643, 8219, 8363, 10667, 11243, 11279, 11423, 12323, 12647, 12791, 13367,...

No es difícil, dado un número primo, encontrar otro primo, el menor posible, que se diferencie del primero en un cuadrado. La función en VBA de Excel puede ser la siguiente:

Function primsalto(a) As Long

Dim p, prim,d As Long

Dim sale As Boolean

if not esprimo(a) then primsalto=0:exit function ‘No es primo y se asigna un cero

p = primprox(a): sale = False: prim = 0 ‘Se van buscando los siguientes primos

While Not sale

d=p-a ‘Se calcula la diferencia

if escuad(d) then prim=p:sale=true ‘Si la diferencia es cuadrada, tenemos la solución

p=primprox(p) ‘Se sigue con el siguiente primo

wend

primsalto=prim ‘Se encontró

End Function

Hay que usar las funciones ESCUAD y PRIMPROX, que se pueden buscar en nuestro blog.

Con ella, comenzando, por ejemplo en el 7, se construye fácilmente un conjunto dentro de la sucesión:

Si elegimos un primo que no figure en la sucesión, como el 13, construiremos otra similar, que, en este caso sería:
 

En este caso nos devuelve otra sucesión cuyos primeros términos no coinciden con los anteriores. Podía haber un elemento común, con lo que ambas sucesiones coincidirían totalmente a partir de él. Volveremos a ese tema.

En la sucesión de OEIS citada se organiza la búsqueda con un orden distinto, pues para cada primo se le van sumando cuadrados hasta llegar a otro primo. El código PARI es muy sintético y lo copiamos aquí.

print1(a=2, ", "); for(n=1, 43, k=1; while(!isprime(b=a+k^2), k++); print1(a=b, ", "))

Usa la instrucción print para asignar también valores a las variables. No lo habíamos visto hasta ahora, y es ingenioso.

Cuestiones diversas

Naturaleza de los cuadrados

Para primos mayores que 6, en cada inicio de sucesión, si se llega a un tipo 36k+p, siendo p primo del tipo 6q+5, todos los cuadrados que se añadan en este proceso serán múltiplos de 36, con lo que el tipo inicial 36k+p se mantendrá.

Efectivamente, si le sumo otro cuadrado, deberá ser par, para que la suma siga siendo impar, y también ha de ser  múltiplo de 3, pues, en caso contrario, sería uno de los tipos 6m+2 o 6m+4, y resultaría:

36k+p+(6m+2)² =36(k+m²)+24m+4+p

36k+p+(6m+4)² =36(k+m²)+48m+16+p

Si p=6k+5 no valen estos casos, pues 4+p y 16+p serían múltiplos de 3, con lo que el resultado final no sería primo. Por tanto, el cuadrado ha de ser múltiplo de 36.

Si p=6k+1, puede no ser el salto de 36k, sino otro cualquiera par, como 4, 16, 64 o 100.

Observamos algunos inicios:

Inicio 37

Este primo es del tipo 6k+1, por lo que el cuadrado que se suma no ha de ser múltiplo de 36, pero el siguiente, 41, es del tipo 6k+5, y a partir de él, todos son del mismo tipo. A esta situación se llegará siempre. Es fácil razonarlo.

36k+6q+1+(6m+2)² =36(k+m²)+24m+4+6q+1=6h+5

36k+6q+1+(6m+4)² =36(k+m²)+48m+16+6q+1=6h+5

Lo vemos en la imagen:

 


Todos los restos módulo 6 valen 5, y todas las diferencias múltiplos de 36 a partir del 41.

Inicio 47

Este primo es del tipo 6k+5, luego todos los cuadrados serán múltiplos de 36

 


Primos consecutivos

Hemos visto que el primo 37, con un cuadrado se ha convertido en su consecutivo. En este caso, con cuadrado igual a 4. Esto será frecuente, pero habrá otros ejemplos. En un primer intento, todos los casos hasta el valor de 1000 presentan una diferencia de 4. El siguiente cuadrado par, 16, se alcanza por primera vez en el par 1831, 1847. La siguiente diferencia de 64 no se alcanza para valores inferiores a 25000. Con el siguiente código, adaptado de OEIS, hemos encontrado dos pares de primos consecutivos con diferencia 64.

primosalto(n)={my(k=1,b);while(!isprime(b=n+k^2), k++);b}

forprime(i=2,2000,p=nextprime(i+1) ;q=primosalto(i);if(p==q&&p-i==16,print(i," ",p)))

Son estos: (89689, 89753) y (107377, 107441)

Los primeros casos para cada cuadrado están publicados en https://oeis.org/A138198:

2, 7, 1831, 9551, 89689, 396733, 11981443, 70396393, 1872851947, 10958687879, 47203303159, 767644374817, 8817792098461, 78610833115261, 497687231721157, 2069461000669981, 22790428875364879, 78944802602538877....

Primos comunes a dos sucesiones

Se podría preguntar si estas sucesiones son disjuntas o existen elementos comunes, y la respuesta es que sí los hay. Hemos usado la siguiente función para detectar si un número primo pertenece a la sucesión iniciada con otro primo menor, al que llamaremos antecedente.

function numsaltos$(n)

dim s$

dim i,k

k=0 ‘Contador de soluciones

i=2 ‘Primer inicio primo

while i<=n and k<2

if n=primsalto(i) then k=k+1:s=s+str$(i)+", "’Nueva solución

i=primprox(i)’Siguiente primo posible

wend

if k>=2 then numsaltos=str$(ajusta(k))+". "+s else numsaltos="NO"

end function ‘Devuelve un par de soluciones o un “NO”

Los primeros elementos comunes, seguidos por dos antecedentes son:

41  5,  37

47  11,  31

83  47,  79

89  53,  73

107 71,  103

167 131,  151

173  29,  137

197 181,  193

 Por ejemplo, 167 pertenece a las sucesiones

131, 167, 311, 347, 383

151, 167, 311, 347, 383

Es evidente que, a partir de un elemento común, todos lo son.

Primos sin antecedentes

Si modificamos la función numsaltos para que devuelva sólo el número de antecedentes, obtendremos otras soluciones interesantes:

Estos serían inicio de sucesión pero no pertenecerían a ninguna otra. Basta buscar aquellos primos p en los que numsaltos(p)=0. Los primeros son estos:

2, 5, 13, 19, 29, 31, 37, 43, 61, 67, 73, 79, 103, 109, 127, 139, 151, 157, 163, 179, 181, 191, 193, 199, 211, 223, 229, 241, 271, 277, 283, 313, 331, 337, 349, 359, 367, 373, 379, 397, 409, 421, 431, 433,...

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

martes, 16 de mayo de 2023

Diversos órdenes de la función TAU

Una extensión de la definición de la función TAU, que es la que cuenta los divisores de un número, puede ser la que resuma las descomposiciones en dos factores, N=x*y, o, ya puestos, las de tres factores N=x*y*z, o cuatro. Así podríamos definir TAU_1, TAU_2, TAU_3,…según el número de esos factores.

En este blog hemos aludido alguna vez a la descomposición de un número en tres factores, pero sin tener en cuenta el orden de los mismos, que elegíamos ordenados en orden creciente.

Por ejemplo, se tratan en https://hojaynumeros.blogspot.com/2018/04/productos-de-tres-divisores-13.html y siguientes

En esta entrada dedicaremos una pequeña referencia a TAU_2, que en realidad es la función TAU tradicional, para después dedicarnos a TAU_3 y TAU_4. A partir de ellas no es difícil estudiar las siguientes.

 

Función TAU_2(n)

Si buscamos todos los pares ordenados de divisores de N cuyo producto es N, en realidad estamos contando los divisores simples, porque cada divisor posee un complementario (N/d) respecto a N que también es divisor de N, lo que duplica su presencia en los productos.

En síntesis: TAU_2(N) = TAU(N)

Es lo único que estudiaremos de esta función, muy conocida y también muy usada en este blog.

Según el razonamiento anterior, contar divisores de un número N equivale a contar soluciones ordenadas de la ecuación N=x*y con x e y positivos.

Lo podemos comprender mejor con un ejemplo concreto. Hemos elegido el número 84:

El número de divisores de 84, o TAU(84), se calcula a partir de la descomposición factorial: 84=22*3*7, aplicando la conocida fórmula del producto de exponentes incrementados en una unidad:

TAU(84)=(1+2)(1+1)(1+1)=12.

Los doce divisores son: 84, 42, 28, 21, 14, 12, 7, 6, 4, 3, 2 y 1

Viene bien recordar que el valor de TAU sólo depende de la signatura prima, que es el conjunto de exponentes, y no de los factores primos.

Por otra parte, las soluciones de 84=x*y se pueden encontrar con nuestra herramienta Cartesius (http://www.hojamat.es/sindecimales/combinatoria/herramientas/herrcomb.htm#cartesius)

Con ella podemos usar el siguiente planteo:

Se sigue fácilmente: Combinar dos números, entre 1 y 84, que sean ambos divisores de 84, y que su producto sea también 84. Resultan las soluciones:

Como cada divisor d posee un único complementario N/d para conseguir el 84, es evidente que resultarán también 12 soluciones, con lo que comprobamos que esta forma de definir TAU es válida.

 

Función TAU_3(n)

Ya se indicó más arriba que la descomposición en tres factores ya se ha abordado en este blog, pero ahora consideraremos todas las ordenaciones posibles de las tres soluciones de la ecuación N=x*y*z. No es difícil razonar cómo encontrar el número de soluciones. Basta considerar que z ha de tomar todos los valores posibles de divisores de N, y que x*y serían entonces todos los productos posibles del complementario de z, N/z. Por tanto, cada valor de z se combinará con las soluciones de N/z=x*y, que vimos más arriba que coinciden con el número de divisores de N/z. Por tanto TAU_3(N) se encuentra sumando los números  de divisores de cada divisor de N.

Lekraj Beedassy lo expresa muy bien en OEIS: “Number of divisors of n's divisors”.

Lo comprobaremos de varias formas con el mismo ejemplo del 84. Comenzaremos con Cartesius:



El mismo plantamiento que con dos factores, adaptándolo a tres. Resultan entonces 54 soluciones.



Ahora lo resolveremos con una función para Excel o Calc:

Public Function tau_3(n)

Dim i, j, s

 

s = 0 ‘Inicio del contador

For i = 1 To n

If n / i = n \ i Then ‘Recorre los divisores de N

For j = 1 To i

If i / j = i \ j Then s = s + 1 ’Aumenta el contador con “divisores de divisores”

Next j

End If

Next i

tau_3 = s

End Function

 

Si lo aplicamos al número 84, se confirma que TAU_3(84)=54

En https://oeis.org/A007425 están publicados los valores para los primeros números:

A007425 d_3(n), or tau_3(n), the number of ordered factorizations of n as n = r s t.

1, 3, 3, 6, 3, 9, 3, 10, 6, 9, 3, 18, 3, 9, 9, 15, 3, 18, 3, 18, 9, 9, 3, 30, 6, 9, 10, 18, 3, 27, 3, 21, 9, 9, 9, 36, 3, 9, 9, 30, 3, 27, 3, 18, 18, 9, 3, 45, 6, 18, 9, 18, 3, 30, 9, 30, 9, 9, 3, 54, 3, 9, 18, 28, 9, 27, 3, 18, 9, 27, 3, 60, 3, 9, 18, 18, 9, 27, 3, 45, 15, 9, 3, 54, 9, 9, 9, 30,…

Puedes comprobar valores con Cartesius o nuestra función.

Los códigos PARI publicados en esta página son tan ingeniosos, que es prferible copiar alguno. Por ejemplo:

a(n)=sumdiv(n, x, sumdiv(x, y, 1 )) \\ Joerg Arndt, Oct 07 2012

Pide sumar, para cada divisor de N, un 1 por cada uno de sus divisores, lo que equivale a contarlos. Lo probamos en la página web de PARI:

 for(i=1, 200, print1(sumdiv(i, x, sumdiv(x, y, 1 )),", "))


Coincide, como era de esperar, con los publicados.

 

Intervienen los números triangulares

Todos los resultados son productos de números triangulares y dependen de la signatura prima de N, y no de los valores de los factores primos.

Introducimos el tema con algunos ejemplos:

N es primo

En ese caso Tau_3(N)=3, porque los productos xyz posibles serían 11p,1p1, y p11, es decir T(1+1)=3, representando por T el triangular correspondiente. También podemos acudir a una partición plana que represente la segunda definición que hemos dado (https://en.wikipedia.org/wiki/Plane_partition)

1  p

1

Es un esquema triangular de lado 2

 

N es semiprimo N=p*q con factores primos diferentes

Los productos xyz serían

N11, 1N1, N11, 1pq, 1qp, qp1, q1p, pq1, p1q son nueve, que coincide con T(1+1)T(1+1)=3*3=9

Como partición plana:

N  p  q  1

p 1

q 1

1

Resulta TAU_3(pq)=9

 

Para un semiprimo cuadrado

Los productos serían 11n,1n1, n11, 1pp, p1p, pp1 son seis: T(2+1)=T(3)=6

En representación de dos dimensiones:

N p 1

p 1

1

TAU_3(p2)=6

 

Para exponentes 2 y 1, como el 12:

Los productos serían 1(12)1, 11(12), (12)11, 143, 134, 413, 431, 314, 341, 223, 232, 322, 126, 162, 216, 261, 612, 621 son 18, T(2+1)T(1+1)=6*3=18

En un esquema de partición plana se organizarían así:

12   6   4   3   2   1

6   3   2   1

4   2   1

3   1

2   1

1

TAU_3(p2q)=18

Los divisores de los divisores resultan ser 18, ordenados.

Aquí nos detenemos. Hemos comprobado que para un factor el TAU_3(N) es un triangular, y para dos factores, un producto de triangulares. Pues bien, ese esquema se conserva, y si un número posee varios factores primos con diferentes exponentes, bastará sustituir en la fórmula de la función TAU los paréntesis por números triangulares


Lo podemos razonar descomponiendo la partición plana en diversas zonas cuando se añade un factor nuevo. Tomaremos el 12 como ejemplo y realizaremos un producto cartesiano entre los datos del 4 con los del 3


Hemos representado en colores distintos las zonas en las que se divide el producto cartesiano de seis filas y tres columnas:

En rojo figuran los elementos de TAU_3(4), los que había antes de incorporar el 3. En la tercera columna figuran los divisores en los que interviene el nuevo factor 3. Las zonas horizontales de distinto color representan los “divisores de divisores”, que son fundamentales en este estudio.

Es fácil comprender que obtendríamos un esquema similar si el nuevo factor estuviera elevado a un exponente mayor que 1. Ahí lo dejamos y nos creemos sin desarrollarlo que también se obtendría un producto de triangulares.

Sólo comprobaremos la fórmula con nuestras funciones. Por ejemplo, 72=23*32, luego según la fórmula sugerida, tendríamos TAU_3(72)=T(1+3)T(1+2)=10*6=60

Con nuestra función

 


Con el código PARI de Joerg Arndt

print(sumdiv(72, x, sumdiv(x, y, 1 )))



Función TAU_4(n)

El estudio de TAU_3 nos ha abierto caminos y los hemos aprovechado con calma. Ahora sólo resumiremos algunos de ellos en los demás casos.

Si definimos TAU_4(N) como como el número de productos xyzu de cuatro factores (con ordenación) cuyo producto es N, podremos comenzar como en el caso de 3, con nuestra herramienta Cartesius. Sería así en nuestro ejemplo del 84:



Al combinar cuatro factores, el proceso es más lento, pero no excesivamente, y nos da un resultado de 160:

Algunas ideas sobre TAU_3(N) se pueden ampliar a TAU_4(N). La primera es que la frase “divisores de divisores” habrá que cambiarla por “Valores de TAU en divisores”, ya que, al añadir un factor nuevo en el producto xyzv, este no se combina con divisores, sino con productos que vimos al principio que representaban a TAU. Así, el esquema bidimensional no se rellenará con divisores, sino con su número de divisores. Recordemos que en TAU_3 usábamos este esquema

12   6   4   3   2   1

6   3   2   1

4   2   1

3   1

2   1

1


Ahora deberíamos sustituir cada divisor por el valor de TAU (número de divisores) en cada uno. Lo hemos efectuado en Excel relacionando los dos esquemas:

Como podemos observar, TAU_4(12)=40.

Podíamos añadir un bucle a nuestra función en VBasic para TAU_3, pero resultaría algo lenta. Por otra parte, no es difícil la comprobación con Cartesius, cambiando datos en las condiciones que usamos para el 84. Sin embargo, parece más útil comprobar el cálculo recordando la fórmula para TAU_3 que usa números triangulares

En efecto, para TAU_4 se pueden sustituir por tetraedros, pirámides triangulares, ya que las posibilidades dependen de tres dimensiones. Esta idea es correcta y se puede aplicar en este caso. Hay que recordar que la fórmula del tetraedro de orden n es TE(n)=n(n+1)(n+2)/6 (ver nuestra publicación Números piramidales:

 http://www.hojamat.es/publicaciones/piramidal.pdf)

En el caso de 12 quedaría:

12=22*3

TAU4_(12)=TE(1+2)*TE(1+1)=3*4*5/6*2*3*4/6=10*4=40

Con ello queda comprobada esta técnica, que se amplía a TAU_5, TAU_6,…aumentando dimensiones a las pirámides.

Puedes repasar todo en la sucesión https://oeis.org/A007426, en la que están publicados los primeros valores de TAU(N):

1, 4, 4, 10, 4, 16, 4, 20, 10, 16, 4, 40, 4, 16, 16, 35, 4, 40, 4, 40, 16, 16, 4, 80, 10, 16, 20, 40, 4, 64, 4, 56, 16, 16, 16, 100, 4, 16, 16, 80, 4,…

Con esto, podemos seguir ampliando productos, pero con lo que tenemos ya se comprende la esencia de estas funciones TAU.