He aquí algunos de Python 3 código que se encuentra en todas las soluciones < 5000000. Quite el comentario de la break
estado de cuenta si lo que desea es la primera solución. Esta secuencia de comandos se ejecuta también en Python 2, pero se utiliza menos memoria RAM, si cambias range
a xrange
.
num = 5000000
sieve = num//2 * [True]
for i in range(3, int(num**0.5) + 1, 2):
if sieve[i//2]:
sieve[i*i//2::i] = (1 + (num - i*i - 1) // (2*i)) * [False]
for j in range(0, num // 2, 50):
if not any(sieve[j:j+50]):
print(2*j)
#break
salida
1671800
2637800
3117300
3933600
4640600
4652400
Este código se ejecuta en menos de un segundo en mi antigua 2 ghz de 32 bits de la máquina.
Utiliza una Criba de Eratóstenes para encontrar impares, números primos. El tamiz de código se deriva de código por Robert William Hanks.