From 80c8a56f4677e67b0cf6d9e3a9b7a021d9d7b25a Mon Sep 17 00:00:00 2001 From: philgetzen Date: Sat, 19 Jan 2013 14:25:07 -0500 Subject: [PATCH 1/4] Added functionality for sieve algorithm. Implemented in module, iter, and gen. Can be found in respective folders sieve_mod, sieve_iter, sieve_gen. Can be run just as fib and series are run. --- series_gen/sieve_mod/example.py | 0 sieve_gen/example.py | 4 ++++ sieve_gen/sieve.py | 18 ++++++++++++++++++ sieve_gen/sieve.pyc | Bin 0 -> 671 bytes sieve_iter/example.py | 4 ++++ sieve_iter/sieve.py | 23 +++++++++++++++++++++++ sieve_iter/sieve.pyc | Bin 0 -> 1212 bytes sieve_mod/example.py | 6 ++++++ sieve_mod/sieve.py | 18 ++++++++++++++++++ sieve_mod/sieve.pyc | Bin 0 -> 667 bytes 10 files changed, 73 insertions(+) create mode 100644 series_gen/sieve_mod/example.py create mode 100644 sieve_gen/example.py create mode 100644 sieve_gen/sieve.py create mode 100644 sieve_gen/sieve.pyc create mode 100644 sieve_iter/example.py create mode 100644 sieve_iter/sieve.py create mode 100644 sieve_iter/sieve.pyc create mode 100644 sieve_mod/example.py create mode 100644 sieve_mod/sieve.py create mode 100644 sieve_mod/sieve.pyc diff --git a/series_gen/sieve_mod/example.py b/series_gen/sieve_mod/example.py new file mode 100644 index 0000000..e69de29 diff --git a/sieve_gen/example.py b/sieve_gen/example.py new file mode 100644 index 0000000..5da59c9 --- /dev/null +++ b/sieve_gen/example.py @@ -0,0 +1,4 @@ +import sieve + +for n, i in zip(range(10), sieve.next()): + print i diff --git a/sieve_gen/sieve.py b/sieve_gen/sieve.py new file mode 100644 index 0000000..b4523eb --- /dev/null +++ b/sieve_gen/sieve.py @@ -0,0 +1,18 @@ +_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 diff --git a/sieve_gen/sieve.pyc b/sieve_gen/sieve.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d0901cc1dd7d43a790f4b5de6b4555a88ea2124f GIT binary patch literal 671 zcmb_YT}uK%6uq-ssg-@a6!jAHWDm6nMg$Q-VQ(VZ2M8hR4m!1N>)tUe^r`+!Kd#5# zdZ}|qp&w8KbLPzM+f812%S=;CghCLWCyjXl~xrw5PH3|XT3AVarSp^=nV41gT9^I+vx z#M+9)RXWrK>24PQNox9(%9ax9duZij*I*8u;13{ zOTb1y>1J2QQ+AL%+Z+m;hMTUth;kM{DzDa5R=IdYQKpa!mjSQRN{(_uI=Y-^H;v)@V*9ft*Z z>0)BrO6`9nAf{tIvZBn(08%T;SF4C1>s8!THOb$NQj@%XRsR^iM19hK42O|E6=N*3 Ifgc5S_Kt^aFy5R6z8|$w+{O#D|b5LKKyoRoNg!B(zH6E#2U_sds|{N>AF??f;KrrAnYF?lCDG2#&d$ufc{7fG_qHyt{v3{|{l(bdV!2(2lE@GpDJm6R5SEjSlk+7d%V@GR#m}R(vtfk>@wZN1j~u46%JiI-srUVarw3&D_u zxA`&`v`|(B1@N>M{#z*A5PqF^f$|W_`~fW#z5lvPXE7}zTEui0bbgPhStk#ir|b0D zE8yiUnS~%xrL_lx${Ei|KQ=QX9g;eH7pA~BVu@;zb|p-2BA>P{w3BIfEJ*d#w%Q1U zGt_0384e(PEMsyXlXdS*(fozjWN2^$3eHjSUh6mp53ndw*a|E}y+qXM4$o>B?aW@| zXSq5V^<0{`g`*Tdm`+Vy3R8g*>4YCNekCL@<+YjnTiD%A2vWCItnPq=PLweF?L^jt ziP73KF0Cgg<*dRnXL54Rk@H2~gZKwawEzDUawL;aRQl3Yn=$^~EDQ}JI~k76$cx*` Q9+hfehx*=dCmf^r3*GhZ7ytkO literal 0 HcmV?d00001 diff --git a/sieve_mod/example.py b/sieve_mod/example.py new file mode 100644 index 0000000..842b1bf --- /dev/null +++ b/sieve_mod/example.py @@ -0,0 +1,6 @@ +import sieve + +n = 0 + +for n in range(10): + print sieve.next() \ No newline at end of file diff --git a/sieve_mod/sieve.py b/sieve_mod/sieve.py new file mode 100644 index 0000000..193f7a1 --- /dev/null +++ b/sieve_mod/sieve.py @@ -0,0 +1,18 @@ +#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(): + start = _primeslist[-1] + 1 + while 1: + if _is_prime(_primeslist, start): + _primeslist.append(start) + return start + + start += 1 \ No newline at end of file diff --git a/sieve_mod/sieve.pyc b/sieve_mod/sieve.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6da2bfe161d4e1e92bfe671c94e192eb1617d79b GIT binary patch literal 667 zcmb_Z%Sr<=6ursRKGgcyD7q0`jf*-I3L=PzitbA3C_+I>+X*&09otDpsl|+AT-EhAmge>|mrGzXAtu(wHd&6d-Wd*668T)| zA~Lp<+W&CRDJN=dd9qmskXR9(ScUzZtUFar&fZCBa#p`n{}?>Se1u<-#p;;THLRs1 GOZgvsXM<<} literal 0 HcmV?d00001 From e8cf89b2587816bd0db8e1d653ffa093ef7f352d Mon Sep 17 00:00:00 2001 From: philgetzen Date: Sat, 19 Jan 2013 16:42:58 -0500 Subject: [PATCH 2/4] Added test cases (Assertions) to see if sieve code was working correctly (BREAKING NEWS: IT IS) --- iter_bug/fib.py | 4 ++-- iter_bug/test.py | 3 +-- series_gen/sieve_mod/example.py | 0 sieve_gen/sieve.pyc | Bin 671 -> 671 bytes sieve_gen/test1.py | 9 +++++++++ sieve_gen/test2.py | 13 +++++++++++++ sieve_gen/test3.py | 17 +++++++++++++++++ sieve_iter/sieve.pyc | Bin 1212 -> 1212 bytes 8 files changed, 42 insertions(+), 4 deletions(-) delete mode 100644 series_gen/sieve_mod/example.py create mode 100644 sieve_gen/test1.py create mode 100644 sieve_gen/test2.py create mode 100644 sieve_gen/test3.py diff --git a/iter_bug/fib.py b/iter_bug/fib.py index 59a39a4..6a1f7ee 100644 --- a/iter_bug/fib.py +++ b/iter_bug/fib.py @@ -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 \ No newline at end of file diff --git a/iter_bug/test.py b/iter_bug/test.py index db32b46..6051dca 100644 --- a/iter_bug/test.py +++ b/iter_bug/test.py @@ -11,7 +11,7 @@ def test2(): i.next() assert i.next() == 3 -def test2(): +def test3(): f = fib.fib() i = iter(f) i.next() @@ -21,4 +21,3 @@ def test2(): test1() test2() test3() - diff --git a/series_gen/sieve_mod/example.py b/series_gen/sieve_mod/example.py deleted file mode 100644 index e69de29..0000000 diff --git a/sieve_gen/sieve.pyc b/sieve_gen/sieve.pyc index d0901cc1dd7d43a790f4b5de6b4555a88ea2124f..bef8f11a9543e5af181cbd48b6ef0fcb6bdcf34b 100644 GIT binary patch delta 15 XcmbQwI-iw|`7aGn diff --git a/sieve_gen/test1.py b/sieve_gen/test1.py new file mode 100644 index 0000000..017191b --- /dev/null +++ b/sieve_gen/test1.py @@ -0,0 +1,9 @@ +import sieve + + +def test1(): + s = sieve.next() + i = iter(s) + assert i.next() == 3 + +test1() diff --git a/sieve_gen/test2.py b/sieve_gen/test2.py new file mode 100644 index 0000000..51a4f40 --- /dev/null +++ b/sieve_gen/test2.py @@ -0,0 +1,13 @@ +import sieve + + +def test2(): + s = sieve.next() + i = iter(s) + i.next() + i.next() + i.next() + i.next() + assert i.next() == 13 + +test2() diff --git a/sieve_gen/test3.py b/sieve_gen/test3.py new file mode 100644 index 0000000..5769abc --- /dev/null +++ b/sieve_gen/test3.py @@ -0,0 +1,17 @@ +import sieve + + +def test3(): + s = sieve.next() + i = iter(s) + i.next() + i.next() + i.next() + i.next() + i.next() + i.next() + i.next() + i.next() + assert i.next() == 29 + +test3() \ No newline at end of file diff --git a/sieve_iter/sieve.pyc b/sieve_iter/sieve.pyc index 5da88abe3f67d931e09373a9a8df5ad72938be8b..cb5a6fa9a8a27cbff30ec3554681fb8af1557b91 100644 GIT binary patch delta 54 zcmdnPxrdXL`7J+1^~6?4c-6% delta 54 zcmdnPxrdXL`7J+1^}x^4V(Y~ From d95e0cd6377d55dfe19a7412f36a6229f717786f Mon Sep 17 00:00:00 2001 From: philgetzen Date: Sat, 19 Jan 2013 16:44:52 -0500 Subject: [PATCH 3/4] Added test cases (Assertions) to see if sieve code was working correctly (BREAKING NEWS: IT IS) --- iter_bug/fib.pyc | Bin 0 -> 898 bytes sieve_iter/test1.py | 9 +++++++++ sieve_iter/test2.py | 13 +++++++++++++ sieve_iter/test3.py | 17 +++++++++++++++++ 4 files changed, 39 insertions(+) create mode 100644 iter_bug/fib.pyc create mode 100644 sieve_iter/test1.py create mode 100644 sieve_iter/test2.py create mode 100644 sieve_iter/test3.py diff --git a/iter_bug/fib.pyc b/iter_bug/fib.pyc new file mode 100644 index 0000000000000000000000000000000000000000..da914998428e6ece8088381a98dfea4ace969cb7 GIT binary patch literal 898 zcmb_aO-sW-5S>lxM+*f{6});0f`*D0K}7W6t&}Yu>}6@vjZH~Y>25$pPx_C=iznYq zYJ1lP=FQvee7u1o9Gz5#Hy$Rc;Gz=Ol|5V RXd~@pyo-9EOKHpfe*m!(sn7rb literal 0 HcmV?d00001 diff --git a/sieve_iter/test1.py b/sieve_iter/test1.py new file mode 100644 index 0000000..7a78c8b --- /dev/null +++ b/sieve_iter/test1.py @@ -0,0 +1,9 @@ +import sieve + + +def test1(): + s = sieve.sieve() + i = iter(s) + assert i.next() == 3 + +test1() diff --git a/sieve_iter/test2.py b/sieve_iter/test2.py new file mode 100644 index 0000000..6b3319c --- /dev/null +++ b/sieve_iter/test2.py @@ -0,0 +1,13 @@ +import sieve + + +def test2(): + s = sieve.sieve() + i = iter(s) + i.next() + i.next() + i.next() + i.next() + assert i.next() == 13 + +test2() diff --git a/sieve_iter/test3.py b/sieve_iter/test3.py new file mode 100644 index 0000000..bcc2226 --- /dev/null +++ b/sieve_iter/test3.py @@ -0,0 +1,17 @@ +import sieve + + +def test3(): + s = sieve.sieve() + i = iter(s) + i.next() + i.next() + i.next() + i.next() + i.next() + i.next() + i.next() + i.next() + assert i.next() == 29 + +test3() \ No newline at end of file From c11843a4f463174f1a8e13eaf53fc656c3ac7374 Mon Sep 17 00:00:00 2001 From: philgetzen Date: Tue, 22 Jan 2013 14:13:11 -0500 Subject: [PATCH 4/4] =?UTF-8?q?Homework=201=20Submission=20=E2=80=93=20Phi?= =?UTF-8?q?l=20Getzen=20=E2=80=93=20ID:=20philgetzen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sieve_gen/sieve.py | 2 ++ sieve_gen/sieve.pyc | Bin 671 -> 671 bytes sieve_gen/test2.py | 7 +++---- sieve_gen/test3.py | 12 +++--------- sieve_iter/sieve.py | 6 +++--- sieve_iter/sieve.pyc | Bin 1212 -> 1203 bytes sieve_iter/test2.py | 6 ++---- sieve_iter/test3.py | 10 ++-------- sieve_mod/example.py | 2 -- sieve_mod/sieve.py | 1 + sieve_mod/sieve.pyc | Bin 667 -> 667 bytes 11 files changed, 16 insertions(+), 30 deletions(-) diff --git a/sieve_gen/sieve.py b/sieve_gen/sieve.py index b4523eb..2777d93 100644 --- a/sieve_gen/sieve.py +++ b/sieve_gen/sieve.py @@ -1,3 +1,5 @@ +#Implementation using a generator + _primeslist = [2] diff --git a/sieve_gen/sieve.pyc b/sieve_gen/sieve.pyc index bef8f11a9543e5af181cbd48b6ef0fcb6bdcf34b..4b374996f3ebeaffe79a46e3791d88c5266cb16a 100644 GIT binary patch delta 42 wcmbQwI-ixD`7uEW%XB%gn&QP|N}(IGH)w0rT4k!~g&Q delta 42 xcmbQwI-ixD`73d{KLpSS%j&Mmyv;ip_m0oa58hU0{{Tm2_^sl diff --git a/sieve_gen/test2.py b/sieve_gen/test2.py index 51a4f40..4d2f545 100644 --- a/sieve_gen/test2.py +++ b/sieve_gen/test2.py @@ -4,10 +4,9 @@ def test2(): s = sieve.next() i = iter(s) - i.next() - i.next() - i.next() - i.next() + + for x in range(4): + i.next() assert i.next() == 13 test2() diff --git a/sieve_gen/test3.py b/sieve_gen/test3.py index 5769abc..9d079c5 100644 --- a/sieve_gen/test3.py +++ b/sieve_gen/test3.py @@ -4,14 +4,8 @@ def test3(): s = sieve.next() i = iter(s) - i.next() - i.next() - i.next() - i.next() - i.next() - i.next() - i.next() - i.next() + for x in range(8): + i.next() assert i.next() == 29 -test3() \ No newline at end of file +test3() diff --git a/sieve_iter/sieve.py b/sieve_iter/sieve.py index 98dafcc..b4dd449 100644 --- a/sieve_iter/sieve.py +++ b/sieve_iter/sieve.py @@ -7,8 +7,8 @@ def __init__(self): def __iter__(self): return self - def _is_prime(self, primes, n): - for i in primes: + def _is_prime(self, n): + for i in self._primeslist: if n % i == 0: return False return True @@ -16,7 +16,7 @@ def _is_prime(self, primes, n): def next(self): start = self._primeslist[-1] + 1 while 1: - if self._is_prime(self._primeslist, start): + if self._is_prime(start): self._primeslist.append(start) return start diff --git a/sieve_iter/sieve.pyc b/sieve_iter/sieve.pyc index cb5a6fa9a8a27cbff30ec3554681fb8af1557b91..8256df0b17de0ee45074de5c2a2039166b576330 100644 GIT binary patch delta 242 zcmdnPxtWul`7 zAw{LB5J`|?pl$|+JTRF#*@r3CPJmH>k%KWABn*-VVX#v?fDDK`fHq5}FfoYNGBQ*c vfW?3=Vq|D$WGFJ9{Fcd)k#n*>a~&i9GXfREdWfB(wnH2;QEnx!^1x1;; zsl}6RnKC7L83h