Uno de los conceptos más populares en Teoría de números es el de primos gemelos. Generalmente se consideran de ese tipo dos números primos impares que se diferencian en dos unidades, como (5, 7) o (17, 19). La forma más sencilla de llegar a ellos, a partir del (5, 7), es buscar pares del tipo (6n-1, 6n+1), porque son los únicos en los que ambos elementos pueden ser primos, salvo (3, 5). En esta entrada buscaremos otras rutas en las que podemos encontrar esos pares de primos de forma más o menos casual.
Búsqueda directa con 6n-1 y 6n+1
Si deseamos encontrar primos gemelos en
un rango dado, bastará recorrer los múltiplos de 6 y averiguar si sus números
vecinos son ambos primos. Es algo muy sencillo, y si se incluye aquí es por
comenzar con lo más directo. Con esta rutina en VBasic de Excel podemos
encontrar los pares de primos gemelos incluidos en cualquier rango y en la
primera hoja, si escribimos los extremos de ese rango en las celdas J1 y J2
respectivamente:
Sub gemelos()
Dim n, fila, a, b
Dim r$
a =
ActiveWorkbook.Sheets(1).Cells(1, 10).Value ‘Se lee el rango
b =
ActiveWorkbook.Sheets(1).Cells(2, 10).Value
fila = 3 ‘Fila de inicio
n = a - a Mod 6+6 ‘Se busca un múltiplo de 6
Do While n <= b ‘Se avanza entre los múltiplos de 6
If esprimo(n - 1) And esprimo(n + 1)
Then ‘Los números vecinos son primos
r = Str$(n - 1) + ", " +
Str$(n + 1) ‘Se imprime una solución
fila = fila + 1 ‘Siguiente fila
ActiveWorkbook.Sheets(1).Cells(fila,
10).Value = r
End If
n = n + 6 ‘Siguiente múltiplo de 6
Loop
End Sub
En la siguiente imagen podemos observar los pares de primos gemelos entre 3000000 y 3001000. El proceso es muy rápido, aunque el rango abarca mil números.
Con esto se da por terminado este tipo
de búsqueda directa. Vemos otros caminos más enrevesados.
A través de un múltiplo de un primo
Existen muchas sucesiones en OEIS (Enciclopedia
On-Line de las Secuencias de Números Enteros) en las que unos números primos,
multiplicados por un múltiplo de 6 dan lugar a un par de primos gemelos. Es una
búsqueda que relaciona tres números primos y algo más compleja que la anterior.
Por ejemplo, vemos los primeros pares
engendrados por el número primo 13 y los múltiplos de 48*13:
Una variante sería usar una expresión
sobre un número primo, como por ejemplo, todos los pares de números primos
gemelos formados a partir de la expresión p3-p, donde p es un número
primo. Cambiando un poco la rutina se consiguen:
Los valores de esos primos, 2, 11, 31,
…están publicados en https://oeis.org/A158295
Podríamos inventar muchas variantes de
este tipo, pero no aportarían mucho.
Mediante una concatenación
Aquí pasamos a otras curiosidades. Por ejemplo,
comenzamos con un caso que ya está publicado, que consiste en concatenar 2n con
2n-1 y también 2n con 2n+1, y averiguar si ambas concatenaciones constituyen un
par de primos gemelos. Como el proceso es rápido, no nos preocuparemos de que
el número intermedio sea múltiplo de 6.
La siguiente sencilla función usa la
concatenación de Excel, que consiste simplemente en el uso del signo “+” entre
cadenas de texto:
Function concat_gem$(n)
Dim a, b
Dim s$
s = ""
‘Las siguientes líneas concatenan las expresiones
numéricas en modo texto, para después volver a modo numérico con la función VAL.
Esas líneas se cambiarán cuando se desee otra concatenación.
a = Val(Str$(2 * n) + Str$(2 * n - 1))
b = Val(Str$(2 *
n) + Str$(2 * n + 1))
If esprimo(a) And esprimo(b) Then s =
Str$(a) + ", " + Str$(b) Else s = "NO" ‘ Si ambas concatenaciones producen primos gemelos, se comunica mediante la
variable s.
concat_gem = s
End Function
Con esta función reproducimos la lista publicada en https://oeis.org/A102478
No abarcaríamos aquí las posibilidades
de concatenaciones curiosas sobre este tema. La siguiente tabla recoge algunos
primos gemelos de cinco cifras provenientes de concatenar un número consigo
mismo:
Con ello los gemelos se forman con el
número, su siguiente y su anterior.
Si usamos el lenguaje PARI podemos
intentar este código para el mismo caso, fácilmente adaptable a otros:
concat_gem(n)=my(a,b,v=[0,0]);a=eval(concat(Str(n),Str(n-1)));b=eval(concat(Str(n),Str(n+1)));if(isprime(a)&&isprime(b),v=[a,b];print1(v));v
for(i=1,1000,if(concat_gem(i)<>[0,0],print("
",i)))
Esta versión nos daría los primeros
casos:
Por la forma de programarlo, el valor de
N aparece al final.
Podemos seguir jugando. En los
siguientes hemos concatenado N con su simétrico en cifras:
Con estos ejemplos se adivina que quedan
muchas posibilidades por explorar en la concatenación, pero serían necesarias
otras funciones sobre cifras.
Podemos buscar una forma de encontrar
primos gemelos a partir de N, pero intercalando funciones. Por ejemplo,
buscando SIGMA(N)±1:
Observamos que son abundantes los casos
encontrados. Tienes más en https://oeis.org/A072282
Un caso curioso es aquel en el que N es
primo, pues entonces SIGMA(N)=N+1, con lo que un posible primo gemelo es el
mismo N, como podemos observar en la tabla con 5, 11, 17 y 29. Todos ellos
tienen en común que SIGMA es múltiplo de 6.
Si exigimos que N no sea primo, nos
quedan
Estos resultados figuran en https://oeis.org/A068017. Es fácil razonar que son aquellos casos en los que SIGMA(N) es múltiplo
de 6. Como un valor de SIGMA puede ser compartido por varios números, es lógico
que el par (71, 73) aparezca repetido.
Podríamos pretender encontrar un par de
primos gemelos, pero que una expresión creada a partir de ellos también
constituyera otro par de primos gemelos. Un ejemplo sería que n+1 y n-1
formaran par y también fueran gemelos n2+5 y n2+7, por
ejemplo (buscamos en lo posible centrarnos en múltiplos de 6):
Con estos ejemplos nos podemos dar una
idea de búsquedas diferentes que se pueden emprender en talleres de
Matemáticas.
No hay comentarios:
Publicar un comentario