Guest User

Untitled

a guest
May 26th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.97 KB | None | 0 0
  1. def primes(limit):
  2. """
  3. generate lazy (finite) sequence of primes below limit
  4.  
  5. >>> list(primes(100))
  6. [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
  7. >>> sum(primes(1000*1000))
  8. 37550402023
  9.  
  10. """
  11. sieve = [False]*limit
  12.  
  13. for j in xrange(2, limit):
  14. if sieve[j]: continue
  15. yield j # got new prime
  16. if j*j > limit: continue # optimization
  17. for i in xrange(j, limit, j):
  18. sieve[i] = True # fastest to just update even if redundant
  19.  
  20. if __name__ == '__main__':
  21. import doctest
  22. doctest.testmod()
  23.  
  24. from timeit import timeit
  25. print("starting timing tests...")
  26. print(timeit("sum(primes(100*1000))", "from __main__ import primes", number=100)/100)
  27. print(timeit("sum(primes(1000*1000))", "from __main__ import primes", number=10)/10)
  28. print(timeit("sum(primes(10*1000*1000))", "from __main__ import primes", number=3)/3)
  29. print("done with timing tests...")
Add Comment
Please, Sign In to add comment