jueves, 3 de marzo de 2016

¿Qué hay entre dos primos consecutivos? (2)

En la anterior entrada presentamos la cuestión de cuántos números de un tipo determinado aparecen entre dos primos consecutivos. Les llamamos entreprimos. Ahora estudiaremos por separado algunos casos:

Entreprimos cuadrados

El caso de los entreprimos cuadrados es muy interesante, porque con ellos estudiamos el reverso de la Conjetura de Legendre, según veremos más adelante. En la tabla que proponemos alojada en

http://www.hojamat.es/blog/entreprimos.xlsm

es muy sencillo contar los cuadrados existentes en cada fila, o destacarlos con formatos en color. También podemos usar el Basic VBA de las hojas, y por último, acudir a PARI para los recuentos. Recorremos los distintos procedimientos:

Destacar cuadrados

Lo puedes realizar manualmente, recorriendo las distintas filas y marcando con negrita o cualquier color los cuadrados que encuentres.



Te darás cuenta al hacerlo de que no hay más de un cuadrado en cada fila de entreprimos. Ya verás que esto se relaciona con la conjetura de Legendre.

Hay una forma automática de colorear todos los cuadrados. Lo hemos conseguido con las funciones de un complemento que tenemos instalado, y lo que sigue, un poco oscuro, sólo te servirá de incentivo para introducirte en el Excel avanzado, pero es bueno dejar constancia del método empleado.

Sub recorrido()
Dim i, j, m
Dim f As Boolean


For i = 4 To 200
For j = 4 To 30
m = ActiveWorkbook.Sheets(1).Cells(i, j).Value ‘Lee el valor de cada celda
If IsNumeric(m) And m > 0 Then ‘Si es un número, seguimos
f = Application.Run("escuad", m) ‘Si es un cuadrado, lo colorea
If f Then Call colorea(i, j, 1)
End If
Next j
Next i

End Sub

Sub colorea(x, y, c) ‘Rutina para colorear o borrar el color
If c = 1 Then
Cells(x, y).Interior.Color = RGB(255, 0, 0)
Else
Cells(x, y).Interior.Color = RGB(255, 255, 255)
End If
End Sub

Con estas dos rutinas podemos colorear sólo los cuadrados de cada fila.
Vemos que efectivamente, el número de cuadrados entre dos primos sólo puede ser cero o uno.



Búsqueda en Basic o PARI

Si deseamos proseguir la búsqueda de cuadrados más allá del número 1000 necesitamos algo más rápido, que nos devuelva un listado con el número de cuadrados (0 o 1) contenidos en cada intervalo entre dos primos consecutivos. La función que sigue, ampliable, encuentra los cuadrados (tipo=1) o los triangulares (tipo=2) que siguen a un primo, pero inferiores al siguiente (entreprimos)

Function num_entreprimos(n, tipo)
Dim nm, p, i

nm = 0

If esprimo(n) Then
p = primprox(n)
For i = n + 1 To p - 1
Select Case tipo
Case 1: If escuad(i) Then nm = nm + 1
Case 2: If estriangular(i) Then nm = nm + 1
End Select
Next i
End If

num_entreprimos = nm
End Function

El problema que presenta es que usa funciones diseñadas por el autor y que no siempre son fáciles de encontrar. Por eso, proponemos también la versión en PARI (para cuadrados)

numcuad_entre(n)={local(i,m=0);if(isprime(n),for(i=n+1,nextprime(n+1)-1,if(issquare(i),m+=1)));m}

En ella contamos los cuadrados (“issquare”) entre n+1 y nextprime(n+1)-1, es decir, entre los entreprimos.

Por ejemplo, detrás del primo número 1000 (7919) existe un cuadrado. Puedes comprobarlo si escribes

numcuad_entre(n)={local(i,m=0);if(isprime(n),for(i=n+1,nextprime(n+1)-1,if(issquare(i),m+=1)));m}
{print(numcuad_entre(prime(1000)))}

Lo puedes ver en esta tabla


El siguiente primo a 7919 es el 7927, y entre ambos existe el cuadrado de 89, 7921.

Listado del número de cuadrados

Hemos usado una variante para que figuren los valores en columna, con este resultado:



Estos valores coinciden con los publicados en http://oeis.org/A061265

0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1,…

En dicha página Vladeta Jovovic propone una formula muy sencilla para encontrar ese número de cuadrados:

a(n) = floor(sqrt(prime(n+1)))-floor(sqrt(prime(n)))

Si las partes enteras de las raíces cuadradas de dos primos consecutivos son iguales, no existirá ningún cuadrado entre ellos, y sí habrá uno si son diferentes.

Si deseamos obtener el listado en forma de sucesión acudiremos a PARI, con un código similar al que usamos en anteriores párrafos. También de esta forma prescindimos de los complementos de Excel. Podemos usar lo siguiente:

{forprime(i=2,prime(50),c=nextprime(i+1);a=0;for(k=i+1,c-1,if(issquare(k),a+=1));print1(a,", "))}

Recorremos los primos desde el primero hasta el de orden 50 (por ejemplo). Para cada uno encontramos su siguiente primo y contamos los cuadrados (issquare) que hay entre ellos. Este listado nos servirá de modelo para otras búsquedas, y a ti para experimentar si lo deseas. Su resultado es este, que coincide con los anteriores:


Nos hemos detenido en varios procedimientos, para que veas que coinciden y también para que los conozcas previamente a las siguientes búsquedas.

Relación con la Conjetura de Legendre

¿Por qué los resultados son siempre 0 o 1? La causa es la Conjetura de Legendre:

Entre dos cuadrados consecutivos siempre existe al menos un número primo.

Si esta conjetura es cierta, sólo puede haber un cuadrado entre dos primos consecutivos, pues si hubiera al menos dos, entre ellos debería existir otro primo, con lo cual los primos dados no serían consecutivos.

Entreprimos triangulares

Con procedimientos similares podemos descubrir que entre dos primos consecutivos sólo existe un triangular o ninguno:

0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0,…

Los tienes destacados en nuestra tabla de entreprimos:



Como era previsible, no coexisten dos triangulares en la misma fila, aunque observamos que el 3 es primo y triangular a la vez. Eso nos complicará una fórmula que veremos más adelante.

Puedes usar este código en PARI para obtener el listado:

{forprime(i=2,prime(100),c=nextprime(i+1);a=0;for(k=i+1,c-1,if(issquare(8*k+1),a+=1));print1(a,", "))}

(un número N es triangular si 8*N+1 es un cuadrado. De ahí la expresión “issquare(8*k+1)”)

Detrás del 2 o el 3 no aparecen triangulares. Entre el 5 y el 7 está el 6, y por eso el tercer valor de la sucesión es 1. Entre 7 y 11 se encuentra el triangular 10, pero entre 11 y 13 no hay ninguno. Así podríamos seguir comprobando la sucesión.

El que exista sólo un triangular o ninguno es consecuencia de una conjetura similar a la de Legendre:

Entre dos triangulares consecutivos siempre existe al menos un número primo.

Imitamos la fórmula de Vladeta Jovovic para cuadrados, pero para triangulares es algo más larga:

a(n) = floor((sqrt(8*prime(n+1)+1)-1)/2)- floor((sqrt(8*prime(n)+1)-1)/2)

Sólo es válida a partir del 3, porque entre el 2 y el 3 falla al ser 3 primo y triangular

Entreprimos oblongos

Los oblongos son dobles de triangulares, por lo que esperamos que sólo exista uno o ninguno en cada intervalos entre primos. ¿Será así?

En la imagen puedes ver los resultados para los primeros 400 primos, obtenidos con PARI, que hacen sospechar que sí se tiene la misma situación que con cuadrados o triangulares. Era de esperar.

También para estos valores podemos usar una fórmula similar a las anteriores:

a(n) = floor((sqrt(4*prime(n+1)+1)-1)/2)- floor((sqrt(4*prime(n)+1)-1)/2)

Con ella obtenemos el listado:

0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0,…

Si usamos la tabla en hoja de cálculo observamos que en la mayoría de los casos el oblongo es el número siguiente al primo:


Es sencillo razonar que esto ocurrirá en primos que procedan de la expresión
n^ 2-n-1, que se encuentran ya publicados:

5, 11, 19, 29, 41, 71, 89, 109, 131, 181, 239, 271, 379, 419, 461, 599, 701, 811, 929, 991, 1259, 1481, 1559, 1721, 1979, 2069, 2161, 2351, 2549, 2861, 2969, 3079, 3191, 3539, 3659, 4159,…
(http://oeis.org/A002327)

¿Qué primos poseen un cuadrado y un triangular antes del próximo primo?

Después de revisar los párrafos anteriores nos damos cuenta de que algunos primos van seguidos de un cuadrado y de un triangular antes de llegar al próximo primo. Son estos:

7, 13, 23, 31, 61, 113, 167, 251, 317, 523, 619, 773, 887, 1223, 1759, 2207, 2477, 2699, 3229, 3469, 4093, 5039, 5749, 6553, 7741, 11003, 17939, 22787, 26561, 30593, 32381, 34963, 41611, 48823, 66047, 75041, 118297, 139123, 196247, 293749, 326023, 339887, 374537, 410857, 465119, 505513, 609929,…

Si recorres la tabla en la que hemos destacado tanto triangulares como cuadrados lo comprobarás:



El 3 posee dos destacados, pero hemos de desecharlo por no ser entreprimo. Después siguen con dos destacados 7, 13 y 23. El 31 sólo tiene uno, pero es que 36 es a la vez triangular y cuadrado.

Se puede reproducir el listado con este código para VBA, fácilmente trasladable a otros lenguajes:

If esprimo(i) Then

c = primprox(i)
a = 0
b = 0
For k = i + 1 To c - 1
If escuad(k) Then a = a + 1: m = k
Next k
For k = i + 1 To c - 1
If estriangular(k) Then b = b + 1: n = k
Next k
If a > 0 And b > 0 Then
ActiveWorkbook.Sheets(1).Cells(fila, 6).Value = i
ActiveWorkbook.Sheets(1).Cells(fila, 7).Value = m
ActiveWorkbook.Sheets(1).Cells(fila, 8).Value = n
'ActiveWorkbook.Sheets(1).Cells(fila, 9).Value = b
'ActiveWorkbook.Sheets(1).Cells(fila, 10).Value = c

fila = fila + 1


End If
End If

Potencias de primo no triviales

Entre dos primos consecutivos es normal que se intercale la potencia de otro primo. Por ejemplo, entre 7 y 11 figuran 2^3 y 3^2. Está publicada la lista de los primos que poseen al menos un entreprimo potencia no trivial de otro primo. Los primeros son estos:

3, 7, 13, 23, 31, 47, 61, 79, 113, 127, 167, 241, 251, 283, 337, 359, 509, 523, 619, 727, 839, 953, 1021, 1327, 1367, 1669, 1847, 2039, 2179, 2207,…
( http://oeis.org/A053607)

Por ejemplo, el 619 tiene como siguiente primo 631, y entre ambos aparece 625=5^4.

No obstante, que aparezcan dos potencias es mucho más difícil. Sólo se han encontrado cinco ejemplos menores que 2^63: 7, 23, 113, 2179, 32749 (http://oeis.org/A053706) El 7 ya lo hemos analizado. El 2179, por ejemplo, contiene las potencias 3^7 y 13^3 antes de llegar al próximo primo 2203.