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 # this code iteratively builds up a chain of # filters...slightly tricky, but ponder it a bit numbers = itertools.ifilter(prime.__rmod__, numbers) for a in range(3): for a in range(3): for a in range(3): for a in range(3): for a in range(3): for a in range(3): print 5 for p in iter_primes(): if p > 1000: break print p