primes.py 565 B

123456789101112131415161718192021222324252627282930313233343536
  1. def is_prime(n):
  2. if n == 2:
  3. return True
  4. if n < 2 or not n & 1:
  5. return False
  6. for i in xrange(3, int(n ** .5) + 1, 2):
  7. if not n % i:
  8. return False
  9. return True
  10. def primes_until(n):
  11. """ Sieve of Eratosthenes """
  12. lst = [False] * n
  13. i = 2
  14. while i < n:
  15. if not lst[i]:
  16. yield i
  17. for j in xrange(i, n, i):
  18. lst[j] = True
  19. i += 1
  20. def nprimes(n):
  21. a = 2
  22. while n:
  23. if is_prime(a):
  24. yield a
  25. n -= 1
  26. a += 1