Gera uma lista de primos até Nmax utilizando a técnica do crivo de Erastótenes
#Sieve Erastótenes
from numpy import ones
import math
def sieve(Nmax):
sieveOut =[]
vec_control= ones(Nmax)
for i in range(2,Nmax):
if vec_control[i] ==1:
sieveOut.append(i)
#Zera todos os múltiplos daqui para frente
for j in range(2,math.ceil(Nmax/i)):
vec_control[j*i] =0
return(sieveOut)
Veja também:
Forgotten Lore - Ideias Técnicas com uma pitada de filosofia.