fork(1) download
  1. def sieve1(N):
  2. M = (N-3)//2+1
  3. n = int(N**0.5)
  4. P = [True,True,True,False,True,True,False,True,True,False,True,False,False,True]+[False]*(M-15)
  5. G = (6,4,2,4,2,4,6)
  6. last = 30*(N//30)+1
  7. for w in range(31,last,30):
  8. P[(w-3)//2]=True
  9. x = w
  10. for g in G:
  11. x+=g
  12. P[(x-3)//2]=True
  13. P[(last-3)//2]=True
  14. for g in G:
  15. last+=g
  16. if last>N:
  17. break
  18. P[(last-3)//2]=True
  19. for i in range(7,n+1,2):
  20. if P[(i-3)//2]:
  21. for j in range((i**2-3)//2,M-1,i):
  22. P[j]=False
  23. return [2]+[2*i+3 for i in range(len(P)) if P[i]]
Success #stdin #stdout 0.04s 44680KB
stdin
Standard input is empty
stdout
Standard output is empty