adding primes.py % hg serve % hgweb filerevision, html 200 Script output follows test: 853dcd4de2a6 primes.py

test

view primes.py @ 0:853dcd4de2a6

a
author test
date Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)
parents
children
line source
1 #!/usr/bin/env python
3 """Fun with generators. Corresponding Haskell implementation:
5 primes = 2 : sieve [3, 5..]
6 where sieve (p:ns) = p : sieve [n | n <- ns, mod n p /= 0]
7 """
9 from itertools import dropwhile, ifilter, islice, count, chain
11 def primes():
12 """Generate all primes."""
13 def sieve(ns):
14 p = ns.next()
15 # It is important to yield *here* in order to stop the
16 # infinite recursion.
17 yield p
18 ns = ifilter(lambda n: n % p != 0, ns)
19 for n in sieve(ns):
20 yield n
22 odds = ifilter(lambda i: i % 2 == 1, count())
23 return chain([2], sieve(dropwhile(lambda n: n < 3, odds)))
25 if __name__ == "__main__":
26 import sys
27 try:
28 n = int(sys.argv[1])
29 except (ValueError, IndexError):
30 n = 10
31 p = primes()
32 print "The first %d primes: %s" % (n, list(islice(p, n)))
% hgweb fileannotate, html 200 Script output follows test: primes.py annotate

test

annotate primes.py @ 0:853dcd4de2a6

a
author test
date Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)
parents
children
rev   line source
test@0 1 #!/usr/bin/env python
test@0 2
test@0 3 """Fun with generators. Corresponding Haskell implementation:
test@0 4
test@0 5 primes = 2 : sieve [3, 5..]
test@0 6 where sieve (p:ns) = p : sieve [n | n <- ns, mod n p /= 0]
test@0 7 """
test@0 8
test@0 9 from itertools import dropwhile, ifilter, islice, count, chain
test@0 10
test@0 11 def primes():
test@0 12 """Generate all primes."""
test@0 13 def sieve(ns):
test@0 14 p = ns.next()
test@0 15 # It is important to yield *here* in order to stop the
test@0 16 # infinite recursion.
test@0 17 yield p
test@0 18 ns = ifilter(lambda n: n % p != 0, ns)
test@0 19 for n in sieve(ns):
test@0 20 yield n
test@0 21
test@0 22 odds = ifilter(lambda i: i % 2 == 1, count())
test@0 23 return chain([2], sieve(dropwhile(lambda n: n < 3, odds)))
test@0 24
test@0 25 if __name__ == "__main__":
test@0 26 import sys
test@0 27 try:
test@0 28 n = int(sys.argv[1])
test@0 29 except (ValueError, IndexError):
test@0 30 n = 10
test@0 31 p = primes()
test@0 32 print "The first %d primes: %s" % (n, list(islice(p, n)))
% hgweb fileannotate, raw % hgweb filerevision, raw % hgweb highlightcss friendly 200 Script output follows /* pygments_style = friendly */ % errors encountered % hg serve again % hgweb highlightcss fruity 200 Script output follows /* pygments_style = fruity */ % errors encountered adding eucjp.txt % HGENCODING=euc-jp hg serve % hgweb filerevision, html
1 \xb5\xfe
% errors encountered % HGENCODING=utf-8 hg serve % hgweb filerevision, html
1 \xef\xbf\xbd\xef\xbf\xbd
% errors encountered % HGENCODING=us-ascii hg serve % hgweb filerevision, html
1 ??
% errors encountered