Tras una semana de ausencia, llega una nueva entrega de la serie sobre números primos. Hoy hablaremos de algoritmos para extraer, de forma gráfica, todos los números primos por debajo de un umbral dado.
Esta vez no habrá densos teoremas ni fórmulas matemáticas, ya que se trata de dos algoritmos muy sencillos y antiguos: la Criba de Eratóstenes y la Criba de Euler. En algunos textos se usa la expresión 'tamiz' o 'filtro' en vez de 'criba'. Viene a ser lo mismo.
La Criba de Eratóstenes
Se trata de un algoritmo eficiente para calcular los primos hasta el orden de 107 (es decir, diez millones). Su filosofía es muy sencilla, se basa en ir tachando los números compuestos hasta que en un momento dado podemos garantizar que todos los que quedan son primos.
¿Cómo? es muy simple. Supongamos que queremos calcular todos los primos menores que N. Hacemos una lista con todos los números naturales entre 2 y N. El primer número de la lista (2) es primo. Tachamos todos los múltiplos de 2 (es decir, todos los pares).
Volvemos al principio: el primer número sobrante (3) es primo. Tachamos todos los múltiplos de 3 (es decir, uno de cada 3 números). Ahora, al llegar al principio de la lista, 4 está ya tachado (es múltiplo de 2). El primer número sobrante que encontramos es el 5, pues también lo marcamos como primo y repetimos el proceso.
¿Cuándo podemos detener el proceso? iremos avanzando al principio de la lista hasta que llege el turno de comprobar un número p que cumpla p2 > N.
Es muy sencillo de entender con el ejemplo gráfico que mostramos para calcular todos los primos hasta 120. Tachamos los múltiplos de 2, luego los de 3, los de 5, los de 7, y el siguiente paso sería tachar los múltiplos de 11. Pero 112 = 121, que es mayor que 120. Llegados a este punto ya podemos parar el proceso, todos los números que queden sin tachar son primos.
Este algoritmo es bastante fácil de implementar en los lenguajes de programación habituales y por lo tanto es bastante popular. Sin embargo, como hemos dicho, para umbrales muy grandes deja de ser eficiente y es mejor utilizar otro tipo de métodos de cálculo.
No quiero dejar pasar la ocasión de mencionar que Eratóstenes fue una de las mentes más brillantes de la época clásica. Su mayor hazaña es estimar el radio de la Tierra en el siglo III a. C., obteniendo un resultado con un margen de error inferior al 2% sobre su valor real.
La Criba de Euler
Se trata de una versión refinada de la anterior. No es inmediata desde el punto de vista gráfico, pero sí es más eficiente computacionalmente, ya que cada número compuesto es 'tachado' una sola vez.
Por simplificar las cosas supondremos el mismo ejemplo numérico que antes, es decir, N = 120. Empezamos por el primer número de la lista, 2. Lo marcamos como primo. Ahora multiplicamos todos los números de la lista por 2 (vamos obteniendo 4, 6, 8, 10...) hasta que el producto sobrepase N (es decir, hasta llegar a 61·2 = 122). Tachamos todos los números obtenidos.
En nuestra lista nos han quedado 3, 5, 7, 9, etc., hasta 119. Volvemos al principio. Marcamos el 3 como primo y multiplicamos 3 por todos los números que quedan sin tachar (obtenemos 9, 15, 21...), hasta sobrepasar el 120 (es decir, hasta 41·3 = 123). Eliminamos los productos obtenidos.
En este momento ya sólo nos quedan 5, 7, 11, 13, 17, 19, etc., hasta 119, que no fue eliminado en el paso anterior. Marcamos el 5 como primo y repetimos el proceso (obtenemos 25, 35, 55, 65...) hasta llegar a 25·5 = 125. Quitamos todos estos.
Nuestra lista es ya muy reducida. Repetimos la operación con el 7, obtenemos 49, 77, etc., hasta que llegamos a 19·7 = 133. El siguiente número a comprobar sería 11, pero como 112 = 121, ya hemos terminado el proceso, y todos los supervivientes son primos.
En la siguiente entrega (¿será la última?) hablaremos de un tema fascinante, uno de los mayores misterios sin resolver de las Matemáticas. Y como no podía ser de otra forma, está relacionado con los números primos.
Imágenes | sxc.hu, Wikimedia Commons En Genciencia | Los díscolos números primos (I), (II), (III), (IV), (V).