@@ -0,0 +1,36 @@
+def is_prime(n):
+ if n == 2:
+ return True
+
+ if n < 2 or not n & 1:
+ return False
+ for i in xrange(3, int(n ** .5) + 1, 2):
+ if not n % i:
+def primes_until(n):
+ """ Sieve of Eratosthenes """
+ lst = [False] * n
+ i = 2
+ while i < n:
+ if not lst[i]:
+ yield i
+ for j in xrange(i, n, i):
+ lst[j] = True
+ i += 1
+def nprimes(n):
+ a = 2
+ while n:
+ if is_prime(a):
+ yield a
+ n -= 1
+ a += 1