El algoritmo de Meissel-Lehmer (después de Ernst Meissel y Derrick Henry Lehmer ) es un algoritmo que calcula valores exactos de la función de conteo de primos . [ 1 ] [ 2 ]
Descripción
El problema de contar el número exacto de primos menores o iguales a x , sin enumerarlos todos, se remonta a Legendre . Observó en la Criba de Eratóstenes que
donde ⌊ x ⌋ es la función piso , que denota el mayor entero menor o igual a x y el p i recorre todos los primos ≤ √ x . [ 1 ] [ 2 ]
Dado que la evaluación de esta fórmula de suma se vuelve cada vez más compleja y confusa para valores grandes de x , Meissel intentó simplificar el conteo de los números en la Criba de Eratóstenes. Por lo tanto, él y Lehmer introdujeron ciertas funciones de criba, que se detallan a continuación.
Funciones clave
Sean p 1 , p 2 , … , p n los primeros n números primos. Para un número natural a ≥ 1 , definimos
que cuenta los números naturales no mayores que x con todos los factores primos mayores que p a . También defina para un número natural k ,
que cuenta los números naturales no mayores que x con exactamente k factores primos, todos mayores que p a . Con estos, tenemos
donde la suma solo tiene un número finito de términos distintos de cero porque P k ( x , a ) = 0 cuando p k a > x . Usando el hecho de que P 0 ( x , a ) = 1 y P 1 ( x , a ) = π ( x ) − a , obtenemos
lo cual prueba que se puede calcular π ( x ) calculando φ ( x , a ) y P k ( x , a ) para k ≥ 2 . Esto es lo que hace el algoritmo de Meissel-Lehmer.
Fórmula para P k ( x , a )
Para k = 2 , obtenemos la siguiente fórmula para P k ( x , a ) :
Para k ≥ 3 , las identidades para P k ( x , a ) se pueden derivar de manera similar. [ 1 ]
Expandiendo φ ( x , a )
Con la condición inicial
y la recurrencia
Cada valor de φ ( x , a ) se puede calcular recursivamente.
Combinando los términos
Lo único que queda por hacer es evaluar φ ( x , a ) y P k ( x , a ) para k ≥ 2 , para ciertos valores de x y a . Esto se puede hacer mediante tamizado directo y utilizando las fórmulas anteriores.
Historia
Meissel ya había descubierto que para k ≥ 3 , P k ( x , a ) = 0 si a = π ( x 1/3 ) . Utilizó la ecuación resultante para calcular π ( x ) para valores grandes de x . [ 1 ]
Meissel calculó π ( x ) para valores de x de hasta 10 9 , pero no acertó por poco con el resultado correcto para el valor más grande de x . [ 1 ]
Utilizando su método y una IBM 701 , Lehmer pudo calcular el valor correcto de π (10 9 ) y falló en el valor correcto de π (10 10 ) por 1. [ 1 ]
Algoritmo extendido
Jeffrey Lagarias , Victor Miller y Andrew Odlyzko publicaron una realización del algoritmo que calcula π ( x ) en tiempo O ( x² /³ + ε ) y espacio O ( x¹ /³ + ε ) para cualquier ε > 0. [ 2 ] Al establecer a = π ( x¹ /³ ) , el árbol de φ ( x , a ) tiene O ( x² /³ ) nodos hoja. [ 2 ]
Este algoritmo extendido de Meissel-Lehmer necesita menos tiempo de cálculo que el algoritmo desarrollado por Meissel y Lehmer, especialmente para valores grandes de x .
M. Deleglise y J. Rivat en 1996 y X. Gourdon en 2001 (inédito) presentaron mejoras adicionales del algoritmo. [ 3 ] [ 4 ]
Referencias
- 1 2 3 4 5 6 Lehmer, Derrick Henry (1 de abril de 1958). "SOBRE EL NÚMERO EXACTO DE PRIMOS MENORES QUE UN LÍMITE DADO" . Illinois J. Math . 3 (3): 381– 388. Recuperado el 1 de febrero de 2017 .
- 1 2 3 4 Lagarias, Jeffrey; Miller, Victor; Odlyzko, Andrew (11 de abril de 1985). "Informática: El método Meissel-Lehmer" (PDF) . Matemáticas de la Computación . 44 (170): 537– 560. doi : 10.1090/S0025-5718-1985-0777285-5 . Consultado el 13 de septiembre de 2016 .
- ↑ Deleglise, Marc; Rivat, Joël (15 de enero de 1996). "Computing: El método Meissel, Lehmer, Lagarias, Miller, Odlyzko" . Matemáticas de la Computación . 65 (213): 235– 245. doi : 10.1090/S0025-5718-96-00674-6 .
- ↑ Oliveira e Silva, Tomas (1 de marzo de 2006). "Computación: el método combinatorio" (PDF) . Revista do Detua . 4 (6): 759– 768. Recuperado el 14 de marzo de 2023 .
- Algoritmos de teoría de números