Steve Howell wrote:
> --- George Sakkis <[EMAIL PROTECTED]> wrote:
>> from itertools import count, ifilter
>> def sieve():
>>     seq = count(2)
>>     while True:
>>         p = seq.next()
>>         seq = ifilter(p.__rmod__, seq)
>>         yield p
[snip]
> Is there a way to broaden the problem somehow, so that
> it can be a longer solution and further down on the
> page, and so that I can continue to enforce my
> somewhat arbitrary rule of ordering examples by how
> long they are?

How about we just comment it better?

import itertools

def iter_primes():
     # an iterator of all numbers between 2 and +infinity
     numbers = itertools.count(2)

     # generate primes forever
     while True

         # generate the first number from the iterator,
         # which should always be a prime
         prime = numbers.next()
         yield prime

         # lazily remove all numbers from the iterator that
         # are divisible by prime we just selected
         numbers = itertools.ifilter(prime.__rmod__, numbers)

I think that's 17-ish, though you could shrink it down by removing some 
of the spaces.

STeVe
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to