fork download
  1. import math
  2.  
  3. total = 0
  4. limit = 400000
  5. KnownPrime = set([2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47,
  6. 53, 59, 61, 67, 71])
  7. KnownPrime.update(set([73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127,
  8. 131, 137, 139, 149, 151, 157, 163, 167, 173]))
  9. suspected = set(range(2, limit+1)) # list of suspected prime numbers
  10. for p in KnownPrime:
  11. if p <= limit:
  12. total += p
  13. suspected.difference_update(set(range(p, limit+1, p)))
  14.  
  15. for i in suspected:
  16. k = int( math.sqrt(i)+1 )
  17. if k % 2 == 0: k += 1
  18. PrimeCheck = set(range(k, 2, -2))
  19. PrimeCheck.difference_update(KnownPrime)
  20. for j in PrimeCheck:
  21. if i % j == 0:
  22. break
  23. if i % j:
  24. total += i
  25.  
  26. print total
Success #stdin #stdout 2.5s 8712KB
stdin
200k: 0.96s 8.7 MB
400k: 2.51s 7.8 MB    n^1.4  ... 10**1.4 * 1s = 25 secs projected for 2000000 run
stdout
6458901531