find all multiplicands and multipliers for a number

Rustom Mody rustompmody at gmail.com
Thu Apr 16 00:17:51 EDT 2015


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



More information about the Python-list mailing list