瀏覽代碼

Added some prime number util functions

Taddeus Kroes 13 年之前
父節點
當前提交
af633381fa
共有 1 個文件被更改,包括 36 次插入0 次删除
  1. 36 0
      primes.py

+ 36 - 0
primes.py

@@ -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:
+            return False
+
+    return True
+
+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