fork download
  1. def primes(N):
  2. return reduce((lambda r,x: (r.difference_update(range(x*x,N,2*x)) or r)
  3. if (x in r) else r),
  4. range(3,int((N+1)**0.5+1),2), set([2]+range(3,N,2)))
  5.  
  6. print( sorted( list( primes( 400000 )))[-2:] )
  7.  
  8. # 100k: time: 0.04s memory: 5660 kB
  9. # 200k: time: 0.07s memory: 6520 kB
  10. # 400k: time: 0.13s memory: 7388 kB
  11. # 1m: time: 0.30s memory: 10680 kB < O(n) !!!!
  12. # 2m: time: 0.60s memory: 16736 kB n^1.0 !!!
  13. # 4m: time: 1.23s memory: 28776 kB O(n^1.04) !!
Success #stdin #stdout 0.13s 7416KB
stdin
Standard input is empty
stdout
[399983, 399989]