I wrote a piece of code to generate primes using the sieve of Eratosthenes:
def prime_list(N):
p = 2
l = [x for x in range(p,N)]
new_l = [p]
while p**2 < N:
l = [l[x] for x in range(1,len(l)) if not l[x]%p == 0]
p = l[0]
new_l.append(p)
[l.insert(0,x) for x in new_l[len(new_l)-2::-1]]
return l
Can someone check if this code is correct? I think it is because it's way faster than the code I used to generate primes before:
for x in range(2,N):
for y in range(2,x):
if x%y == 0:
break
else:
print(x)