On Wednesday, April 15, 2015 at 8:07:31 AM UTC+5:30, Paul Rubin wrote: > Steven D'Aprano writes: > > primes = sieve [2..] > > sieve (p : xs) = p : sieve [x | x <- xs, x `mod` p > 0] > > In her paper http://www.cs.hmc.edu/~oneill/papers/Sieve-JFP.pdf, Melissa > > O'Neill calls this the "Sleight on Eratosthenes". > > Oh cool, I wrote very similar Haskell code and converted it to Python. > I probably saw it before though, so it looks like a case of > not-exactly-independent re-invention. > > > def turner(): > > nums = itertools.count(2) > > while True: > > prime = next(nums) > > yield prime > > nums = filter(lambda v, p=prime: (v % p) != 0, nums)
Here's a massive parallel (and more massively inefficient) Turner sieve as bash script $ cat nos2 n=2 while true ; do echo $n n=$(($n + 1)) done $ cat filt read x while true ; do if [ $(($x % $1)) -ne 0 ] ; then echo $x fi read x done $ cat sieve read x echo $x filt $x | sieve Call as nos2|sieve|less For 1st ten primes $ nos2|sieve |head 2 3 5 7 11 13 17 19 23 29 -- https://mail.python.org/mailman/listinfo/python-list