1 2 3 4 5 6 7 8 9 10 11 12 13 | def primes(N): return reduce((lambda r,x: (r.difference_update(range(x*x,N,2*x)) or r) if (x in r) else r), range(3,int((N+1)**0.5+1),2), set([2]+range(3,N,2))) print( sorted( list( primes( 400000 )))[-2:] ) # 100k: time: 0.04s memory: 5660 kB # 200k: time: 0.07s memory: 6520 kB # 400k: time: 0.13s memory: 7388 kB # 1m: time: 0.30s memory: 10680 kB < O(n) !!!! # 2m: time: 0.60s memory: 16736 kB n^1.0 !!! # 4m: time: 1.23s memory: 28776 kB O(n^1.04) !! |
ZGVmIHByaW1lcyhOKToKIHJldHVybiByZWR1Y2UoKGxhbWJkYSByLHg6IChyLmRpZmZlcmVuY2VfdXBkYXRlKHJhbmdlKHgqeCxOLDIqeCkpIG9yIHIpCiAgICAgICAgICAgICAgICAgIGlmICh4IGluIHIpIGVsc2UgciksIAogICAgICAgICAgICAgICByYW5nZSgzLGludCgoTisxKSoqMC41KzEpLDIpLCBzZXQoWzJdK3JhbmdlKDMsTiwyKSkpCgpwcmludCggc29ydGVkKCBsaXN0KCBwcmltZXMoIDQwMDAwMCApKSlbLTI6XSApCgojIDEwMGs6ICB0aW1lOiAwLjA0cyAgICBtZW1vcnk6IDU2NjAga0IgCiMgMjAwazogIHRpbWU6IDAuMDdzICAgIG1lbW9yeTogNjUyMCBrQgojIDQwMGs6ICB0aW1lOiAwLjEzcyAgICBtZW1vcnk6IDczODgga0IKIyAxbTogICAgdGltZTogMC4zMHMgICAgbWVtb3J5OiAxMDY4MCBrQiAgICA8IE8obikgICAgISEhIQojIDJtOiAgICB0aW1lOiAwLjYwcyAgICBtZW1vcnk6IDE2NzM2IGtCICAgICAgbl4xLjAgICAhISEKIyA0bTogICAgdGltZTogMS4yM3MgICAgbWVtb3J5OiAyODc3NiBrQiAgICBPKG5eMS4wNCkgISE=
-
upload with new input
-
result: Success time: 0.13s memory: 7416 kB returned value: 0
[399983, 399989]
set-based one-liner upto SQRT - on ODDS ONLY - difference_update


