Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions sieve-fn.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,4 @@ def next():

for n in range(10):
print next()

4 changes: 4 additions & 0 deletions sieve_gen/example.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import sieve

for n, i in zip(range(10), sieve.sieve()):
print i
19 changes: 19 additions & 0 deletions sieve_gen/sieve.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# this is an implementation of the Eratosthenes' Sieve using
# a generator.

_primeslist = [2]

def _is_prime(primes, n):
for i in primes:
if n % i == 0:
return False
return True

def sieve():
start = _primeslist[-1] + 1
while 1:
if _is_prime(_primeslist, start):
_primeslist.append(start)
yield start

start += 1
Binary file added sieve_gen/sieve.pyc
Binary file not shown.
8 changes: 8 additions & 0 deletions sieve_gen/test1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import sieve

def test1():
s = sieve.sieve()
i = iter(s)
assert i.next() == 3

test1()
12 changes: 12 additions & 0 deletions sieve_gen/test2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import sieve

def test2():
s = sieve.sieve()
i = iter(s)

for x in range(3):
i.next()

assert i.next() == 11 # the fifth prime number should be 11

test2()
10 changes: 10 additions & 0 deletions sieve_gen/test3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import sieve

def test3():
s = sieve.sieve()
i = iter(s)
for x in range(15):
i.next()
assert i.next() == 59 # the seventeenth prime number should be 59

test3()
4 changes: 4 additions & 0 deletions sieve_iter/example.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import sieve

for n, i in zip(range(10), sieve.sieve()):
print i
25 changes: 25 additions & 0 deletions sieve_iter/sieve.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# this is an implementation of Eratosthenes' Sieve using
# Python's iterator functionality. Here, 'sieve' is a class that
# obeys the iterator protocol.

class sieve(object):
def __init__(self):
self.primeslist = [2]

def __iter__(self):
return self

def next(self):
start = self.primeslist[-1] + 1
while 1:
if self.is_prime(start):
self.primeslist.append(start)
return start

start += 1

def is_prime(self, n):
for i in self.primeslist:
if n % i == 0:
return False
return True
Binary file added sieve_iter/sieve.pyc
Binary file not shown.
8 changes: 8 additions & 0 deletions sieve_iter/test1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import sieve

def test1():
s = sieve.sieve()
i = iter(s)
assert i.next() == 3

test1()
10 changes: 10 additions & 0 deletions sieve_iter/test2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import sieve

def test2():
s = sieve.sieve()
i = iter(s)
for x in range(3):
i.next()
assert i.next() == 11 # the fifth prime number should be 11

test2()
10 changes: 10 additions & 0 deletions sieve_iter/test3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import sieve

def test3():
s = sieve.sieve()
i = iter(s)
for x in range(15):
i.next()
assert i.next() == 59 # the seventeenth prime number should be 59

test3()
4 changes: 4 additions & 0 deletions sieve_mod/example.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import sieve

for n in range(10):
print sieve.next()
20 changes: 20 additions & 0 deletions sieve_mod/sieve.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Implementation of Eratosthenes' Sieve by Michael Meldrum:
# Modular form

_primeslist = [2]

def _is_prime(primes, n):
for i in primes:
if n % i == 0:
return False
return True

def next():
global _primeslist
start = _primeslist[-1] + 1
while 1:
if _is_prime(_primeslist, start):
_primeslist.append(start)
return start

start += 1
Binary file added sieve_mod/sieve.pyc
Binary file not shown.