A dumb question about a class
Dick Moores
rdm at rcblue.com
Sun Aug 12 18:30:02 EDT 2007
At 03:09 PM 8/12/2007, Steven Bethard wrote:
>Here's how I'd write the recipe::
>
> import itertools
>
> def iter_primes():
> # an iterator of all numbers between 2 and +infinity
> numbers = itertools.count(2)
>
> # generate primes forever
> while True:
>
> # get the first number from the iterator (always a prime)
> prime = numbers.next()
> yield prime
>
> # remove all numbers from the (infinite) iterator that are
> # divisible by the prime we just generated
> numbers = itertools.ifilter(prime.__rmod__, numbers)
>
>
> class PrimeList(object):
> def __init__(self):
> # infinite iterator of primes
> self._prime_iter = iter_primes()
>
> # the last prime we've seen
> self._last_prime = None
>
> # all primes seen so far
> self._prime_set = set()
>
> # add the first prime (so that _last_prime is set)
> self._add_prime()
>
> def __contains__(self, n):
> # add primes to the list until we exceed n
> while n > self._last_prime:
> self._add_prime()
>
> # return True if n is one of our primes
> return n in self._prime_set
>
> def _add_prime(self):
> # take a prime off the iterator and update the prime set
> self._last_prime = self._prime_iter.next()
> self._prime_set.add(self._last_prime)
I'm afraid my next question is "How do I run this"?
Dick
More information about the Python-list
mailing list