NP técnicamente se refiere a problemas de decisión, así que démos una definición formal del problema de decisión NTH-PRIME:
NTH-PRIME (n, X) es verdadero si la enésima prima es igual a X.
¿Es el tamiz de Eratóstenes un algoritmo de tiempo polinómico para este problema de decisión? No, porque la entrada es de tamaño [matemática] \ log_2 n + \ log_2 X \ aprox log_2 n + \ log2 \ pi (n) \ aprox log_2 n + \ log_2 (n \ log n) = 2 \ log_2 n + \ log_2 \ log n [/ math]. Pero, el tamiz lleva tiempo [math] O (n \ log n \ log \ log n) [/ math], que es exponencial en el tamaño de entrada.
Hay métodos más eficientes, consulte Algoritmo más eficiente para enésimo primo, determinista y probabilístico. El método Meissel-Lehmer se ejecuta en el tiempo [math] O (n ^ {2/3}) [/ math]. Pero tenga en cuenta que esto sigue siendo exponencial en el tamaño de entrada [math] \ log_2 n [/ math]. Un artículo de Lagarias y Odlyzko afirma [matemáticas] O (n ^ {1/2}) [/ matemáticas]: Computación π (x): Un método analítico.
- Teoría de números: ¿Existencia de una ‘a’ con orden de ‘a’ módulo p = p-1?
- ¿Es 10 un número solitario?
- ¿Hay infinitos números perfectos?
- ¿Cómo puede un estudiante de doctorado en Ciencias de la Computación (por ejemplo, trabajar en IA) satisfacer su profunda necesidad de trabajar simultáneamente en la teoría de números?
- ¿Cuántos números racionales [matemática] n [/ matemática] hay tales que [matemática] \ sqrt {n} + \ sqrt {n + 2013} [/ matemática] es racional?
¿Es esta formulación del problema incluso en NP? Bueno, un ingenuo “certificado” de que X es el primo [matemático] n [/ matemático] requiere una lista de los primos previos [matemático] n-1 [/ matemático]. Eso ocupa espacio [matemática] O (n \ log n) [/ matemática], que también es exponencial en el tamaño de entrada, al menos en los casos “difíciles”. Meissel-Lehmer te permite hacerlo mejor, pero no lo suficiente para hacer este polinomio, creo. Relajar nuestro problema para requerir [matemáticas] n [/ matemáticas] th prime [matemáticas] \ leq X [/ matemáticas] en cambio no mejora las cosas. La categoría de complejidad adecuada para este problema es en realidad #P (Sharp-P) ya que la respuesta no puede verificarse en tiempo polinómico.
Nadie puede decir definitivamente que NTH-PRIME es * no * en P, por supuesto, pero todas las soluciones más conocidas hoy requieren un tiempo exponencial en la longitud de la entrada (pero sub-lineal en el valor de la entrada).
Para fines prácticos, puede usar una tabla precalculada que lo coloque en el rango correcto, luego tamizar en el rango: consulte El enésimo algoritmo principal Pero esto solo funciona hasta el tamaño máximo de la tabla precalculada.