Existe un algoritmo de complejidad $O((\ln n) \cdot P(n))$ donde $P(n)$ es la complejidad de calcular la función de recuento de primos en n (normalmente denotada como $\pi(n)$ ).
Por el postulado de Bertrand hay un primo en el intervalo $[n,2n]$ para que puedas hacer una búsqueda binaria en él:
Si $\pi\left(n+\frac{n}{2}\right)-\pi(n)$ > 1 hay un primo en el intervalo $\left[n, n+\frac{n}{2}\right]$ , de lo contrario hay un primo en el intervalo $\left[n+\frac{n}{2}+1,2n\right]$ y así se obtiene un intervalo más pequeño que contiene un primo. Repite el cálculo en el nuevo intervalo. El cálculo para saber cuál de los 2 intervalos utilizar necesita tiempo $O(P(n))$ . Como cada intervalo es la mitad del tamaño del anterior, el número total de cálculos necesarios es O(ln n).
El algoritmo de Odlyzko para $\pi(n)$ tiene complejidad $O(n^{\frac{1}{2}})$ . Hay un enlace a una breve descripción de la misma en la página del polímata. Así que la complejidad global de este algoritmo es $O((\ln n)n^{\frac{1}{2}})$ .