Una fórmula para generar números primos

  • Categoría de la entrada:Artículos

Los números primos son escurridizos; fáciles de definir y difíciles de encontrar. Entender cómo se distribuyen, qué patrones siguen o cómo distinguirlos del resto de números son problemas que han traído de cabeza a los matemáticos durante milenios. ¡Y todavía estamos lejos de una respuesta satisfactoria!

Dicen que encontrar una fórmula capaz de generar todos los números primos sería el mayor éxito de la teoría de números, pues resolveríamos de un plumazo todas las incógnitas que los envuelven. Aunque no todo sería jolgorio: en los primos hemos basado la seguidad de Internet, y conseguir una fórmula de tal calibre sería un paso hacia la destrucción -momentánea- de las telecomunicaciones actuales. Una lástima, pues esa fórmula ya existe.

Fórmulas sencillas

Dentro del problema de encontrar una fórmula que genere los números primos se pueden matizar muchos detalles, pero tal vez este sea el más importante: no solo interesa que la fórmula genere todos los primos, sino que genere solo números primos. Es decir, la fórmula

f(n)=n+2

produce todos los números primos porque, en esencia, produce todos los números naturales mayores o iguales que 2 según vamos dándole valores a n. Está claro que no tiene mucho interés, porque no genera solo números primos, aunque sí los genere todos.

Puede que la expresión más sencilla y famosa en este asunto sea el polinomio cuadrático de Euler, encontrado en 1772:

f(n)=n^2+n+41 .

Si sustituyes el valor de n por cualquier número natural del 0 al 39, el resultado obtenido es un número primo. ¡Una mejora importante, comparada con la fórmula anterior!

Por desgracia, la fórmula de Euler no tiene mucho más que ofrecer. En primer lugar, porque al probar con n=40 nos devuelve un número compuesto y pierde parte de su encanto: no solo genera números primos. Y, después, porque no produce todos los números primos: solo algunos, y siempre mayores de 41. Es imposible, por ejemplo, que esta fórmula genere el 2 o el 11.

Con el paso del tiempo, todos los intentos de encontrar una fórmula genera-primos satisfactoria no llegaron a buen puerto. De hecho, nadie sabía si una expresión así podía siquiera existir. Pero hace cincuenta años las tornas cambiaron.

Una fórmula completa

Supongo que puedo soltar el bombazo ya. Sí, existen varias fórmulas polinómicas que generan todos los números primos, y solo los números primos. En particular, la propuesta por Jones et al. en 1976 es el ejemplo más conocido:

Este polinomio de grado 25 produce todos los números primos que existen. El aspecto es infernal, pero no es difícil de utilizar: elige un valor natural para cada una de sus 26 variables (por ejemplo, a=1, b=2, …, z=26) y sustitúyelo en el polinomio. Si el resultado es un número positivo, entonces será primo. Si es negativo, descártalo. Según vas dándole valores a todas las variables, irás obteniendo todos los números primos que existen. Sin dejarse ninguno. Sin excepciones.

Por supuesto, la deducción de este polinomio es complicada. Se basa en un teorema de la década anterior que reza que cualquier conjunto definido de forma recursivamente enumerable, como los números primos, se puede describir de forma polinomial. En su día, la publicación de un teorema de esta magnitud fue más que emocionante, pues cerraba siglos de búsqueda matemática: ¡la fórmula polinomial capaz de generar todos los números primos existía! Solo había que esperar a que alguien la encontrara.

Y no solo se encontró una fórmula. Con las herramientas adecuadas puedes deducir un amplio abanico de polinomios, de distintos grados y distinto número de variables, que produzcan únicamente números primos, sin dejarse ninguno fuera, como el de la imagen de arriba. Por desgracia, todos estos polinomios tienen truco y no son tan bonitos como los pintan.

El gozo en un pozo

Hay un detalle que chirría al describir el polinomio genera-primos de arriba. Eso de que solo genera números primos no es cierto. Es decir, si al sustituir las 26 variables el resultado es negativo, entonces hay que descartarlo y no nos aporta información. La pregunta es: ¿cómo de frecuentes son los resultados negativos?

La estructura del polinomio genera-primos de arriba se puede simplificar bastante. Si te fijas, tiene dos partes principales. La primera es el factor (k+2). La segunda es un 1 al que se le restan muchos términos al cuadrado.

p(a,..., z) = (k+2)\cdot(1-\alpha_1^2-\alpha_2^2 -\cdots-\alpha_{14}^2)

El valor de los \alpha_i lo puedes encontrar mirando el polinomio de la imagen. Por dar un ejemplo, los dos primeros serían

\begin{array} {lcl} \alpha_1 &= & wz + h +j -q \\ \alpha_2  &= & (gk + 2g + k +1)(h+j) + h -z\end{array}

¿Cómo de frecuentes son los resultados positivos al sustituir todas las variables en el polinomio? De risa, la verdad. Solo hay una manera de hacer que el segundo factor sea positivo: conseguir que todos los \alpha_i se hagan cero. Si uno de ellos no es cero, entonces el resultado final no será positivo y polinomio no producirá un número primo.

Si quieres hacer que todos los \alpha_i se hagan cero de manera expresa, tendrás que resolver un sistema de 14 ecuaciones no lineales, con 26 incógnitas que solo toman valores enteros. En otras palabras, una locura.

\left\lbrace \begin{array} {lcl} 
\alpha_1 & = & wz + h +j -q &=& 0\\ 
\alpha_2 & = & (gk + 2g + k +1)(h+j) + h -z  &=&0\\
&\cdots \\
\alpha_{14} & = & z + pl(a-p) + t(2ap-p^2-1)-pm &=& 0
\end{array}\right.

Si quieres asegurarte de obtener un resultado positivo en este océano de resultados negativos, tendrás que hacer un esfuerzo sobrehumano y resolver un sistema de catorce ecuaciones diofánticas. No es un método eficiente para encontrar números primos.

Por eso, aunque la fórmula es un éxito de la teoría de números, no tiene utilidad práctica. Es como una ruleta, no permite saber de antemano si el resultado va a ser positivo (y primo) o negativo (e inútil). ¡Y hay muchas más posibilidades de que salga negativo! Aunque a nivel teórico sea muy impactante, no es una fórmula práctica para encontrar todos los números primos.

¡El problema de generar primos sigue abierto!