From b97e4d0a9e0cfee39cb8682aa1c2d74335272cf4 Mon Sep 17 00:00:00 2001 From: Michael Meldrum Date: Sun, 20 Jan 2013 16:19:11 -0500 Subject: [PATCH] Homework 1 submission --- sieve-fn.py | 1 + sieve_gen/example.py | 4 ++++ sieve_gen/sieve.py | 19 +++++++++++++++++++ sieve_gen/sieve.pyc | Bin 0 -> 729 bytes sieve_gen/test1.py | 8 ++++++++ sieve_gen/test2.py | 12 ++++++++++++ sieve_gen/test3.py | 10 ++++++++++ sieve_iter/example.py | 4 ++++ sieve_iter/sieve.py | 25 +++++++++++++++++++++++++ sieve_iter/sieve.pyc | Bin 0 -> 1309 bytes sieve_iter/test1.py | 8 ++++++++ sieve_iter/test2.py | 10 ++++++++++ sieve_iter/test3.py | 10 ++++++++++ sieve_mod/example.py | 4 ++++ sieve_mod/sieve.py | 20 ++++++++++++++++++++ sieve_mod/sieve.pyc | Bin 0 -> 727 bytes 16 files changed, 135 insertions(+) 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_gen/test1.py create mode 100644 sieve_gen/test2.py create mode 100644 sieve_gen/test3.py 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_iter/test1.py create mode 100644 sieve_iter/test2.py create mode 100644 sieve_iter/test3.py create mode 100644 sieve_mod/example.py create mode 100644 sieve_mod/sieve.py create mode 100644 sieve_mod/sieve.pyc diff --git a/sieve-fn.py b/sieve-fn.py index 704b059..4e99edf 100644 --- a/sieve-fn.py +++ b/sieve-fn.py @@ -20,3 +20,4 @@ def next(): for n in range(10): print next() + diff --git a/sieve_gen/example.py b/sieve_gen/example.py new file mode 100644 index 0000000..9b3ee25 --- /dev/null +++ b/sieve_gen/example.py @@ -0,0 +1,4 @@ +import sieve + +for n, i in zip(range(10), sieve.sieve()): + print i \ No newline at end of file diff --git a/sieve_gen/sieve.py b/sieve_gen/sieve.py new file mode 100644 index 0000000..382f899 --- /dev/null +++ b/sieve_gen/sieve.py @@ -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 \ No newline at end of file diff --git a/sieve_gen/sieve.pyc b/sieve_gen/sieve.pyc new file mode 100644 index 0000000000000000000000000000000000000000..54851b9864b8f1905479f8a42e5be8d4d4adaefb GIT binary patch literal 729 zcmcIiT}uK%6uoyXKT0ECjGlbVm)fi#f`~v1pCmLgf)H~DnQ~X%nY9n}ss2&_tmmN4 z9fSTr4cs$lmbv$ydv@MG3M=*N&x=0&EXIC{Fl9hMG+?>`VR|FFVG2A)JPK0Ot}Nk> z_5gi>)KAo~n;pQ@7R`w2w`H1pG-H~1R6?bDk49NyOVplZh!Gvjs3tX<8bFTPWw7(! z&?qZ?F5^U1q=iib#<32SK^jryP**_7fvJP}iBYj1s$mc(d%J$Eeb!NTbv5-HqfkAL z;)kl=H|pT1x*a9qor+(4qt#S(2P#^yo$<5Hp-@+wuInak%?f}xLuoE@o}Fu=L3GK% zGyoV3Q*OeljX6x%CkVthSn-OoF%>SSVciaZaV9X?Zx&#T#=5>th^8b;x$h3Iu|(SHJ!|sxaG99#Kd12 YfBT0_7R8UlQIHJPiM$dckn?isZ@nFq0EsZOz^PP{&Ia3@&SV@%IgB7>VG;wK)ylEdkh$|BI-zyLHW{N6-MuAeGeJr*C>R&=JQ zzCo&s0o$ERVaX~5zYM|?BpqGh9(N;=*xz_8pHW66l?E|i)@kXHXToO7rKxghq)^dK zlAkrc;|L*if&Jn(RA%M3xGXDDmsO~?@eYFpQxf(f)J*WPy3@0>`{6d7%IQx6x`tUi z45%KG^5EfUObW8^`9^S=1a$s)a=sz2W`#4JF}!P9)6v4gr~p`^?K+N~^5$0|jxPwQ zF%59+EfsMG`WdcfrO{e$kk)0Lw*@{^W+P?5DR)ll`~@i1#Wg3z4#Y?u?=?`P5br1v aI%QVs`Jq{O30oTo+51^{{^tUQQT+j_pA3@# literal 0 HcmV?d00001 diff --git a/sieve_iter/test1.py b/sieve_iter/test1.py new file mode 100644 index 0000000..965a9cd --- /dev/null +++ b/sieve_iter/test1.py @@ -0,0 +1,8 @@ +import sieve + +def test1(): + s = sieve.sieve() + i = iter(s) + assert i.next() == 3 + +test1() \ No newline at end of file diff --git a/sieve_iter/test2.py b/sieve_iter/test2.py new file mode 100644 index 0000000..0637d48 --- /dev/null +++ b/sieve_iter/test2.py @@ -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() \ No newline at end of file diff --git a/sieve_iter/test3.py b/sieve_iter/test3.py new file mode 100644 index 0000000..d6b7ff3 --- /dev/null +++ b/sieve_iter/test3.py @@ -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() \ No newline at end of file diff --git a/sieve_mod/example.py b/sieve_mod/example.py new file mode 100644 index 0000000..b50b924 --- /dev/null +++ b/sieve_mod/example.py @@ -0,0 +1,4 @@ +import sieve + +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..6f7e0aa --- /dev/null +++ b/sieve_mod/sieve.py @@ -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 \ No newline at end of file diff --git a/sieve_mod/sieve.pyc b/sieve_mod/sieve.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1845fce0c1c1a8ad75278b16ffdf3e0a2c9f0f5d GIT binary patch literal 727 zcmcIh%Sr=55bU04UOq4f6;B?`MOQ@-K}1M=oPuP9fG8nm2N}(7lAT#!Bq#kNKfyop z>Ord~fWF}g{Qh5?YLZW`>k z)3e&iobxo(RT<&(fI(_vZE=k#@o1``Fr~Ozz z^wYboplkKc-qw1O#n(E04y@7lx*hkU3ELPvxe^++jcxmBGS-#>#0AQ8g=g8PCK^PS zw|xQvV{o~GsFueFVVfWj{}9CsoG*IkNKL+(7$r<56*qQqV_1>kLvOZWzOanUn3$gd zo9MAUV_j21@`-c?1D!-wIq8$Lu9Ld|2t^(v(T{Ex)e4ZB=NvEa92Zr?t87YEURqNk a{8jO{?_-N-zK<8ndip?QS%H!&<-Y+S-<10R literal 0 HcmV?d00001