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
4 changes: 2 additions & 2 deletions iter_bug/fib.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,5 @@ def __iter__(self):

def next(self):
next_fib = self.last_1 + self.last_2
self.last_1, self.last2 = self.last_2, next_fib
return next_fib
self.last_1, self.last_2 = self.last_2, next_fib
return next_fib
Binary file added iter_bug/fib.pyc
Binary file not shown.
3 changes: 1 addition & 2 deletions iter_bug/test.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ def test2():
i.next()
assert i.next() == 3

def test2():
def test3():
f = fib.fib()
i = iter(f)
i.next()
Expand All @@ -21,4 +21,3 @@ def test2():
test1()
test2()
test3()

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.next()):
print i
20 changes: 20 additions & 0 deletions sieve_gen/sieve.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#Implementation using a generator

_primeslist = [2]


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


def next():
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.
9 changes: 9 additions & 0 deletions sieve_gen/test1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import sieve


def test1():
s = sieve.next()
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.next()
i = iter(s)

for x in range(4):
i.next()
assert i.next() == 13

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


def test3():
s = sieve.next()
i = iter(s)
for x in range(8):
i.next()
assert i.next() == 29

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
23 changes: 23 additions & 0 deletions sieve_iter/sieve.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#Implementation using Iter

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

def __iter__(self):
return self

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

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

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


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

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


def test2():
s = sieve.sieve()
i = iter(s)
for x in range(4):
i.next()
assert i.next() == 13

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


def test3():
s = sieve.sieve()
i = iter(s)
for x in range(8):
i.next()
assert i.next() == 29

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()
19 changes: 19 additions & 0 deletions sieve_mod/sieve.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#This is an implementation using a module

_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.