# your code goes here
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 p in iter_primes():
if p > 1000:
break
print p
IyB5b3VyIGNvZGUgZ29lcyBoZXJlCmltcG9ydCBpdGVydG9vbHMKCmRlZiBpdGVyX3ByaW1lcygpOgogICAgICMgYW4gaXRlcmF0b3Igb2YgYWxsIG51bWJlcnMgYmV0d2VlbiAyIGFuZCAraW5maW5pdHkKICAgICBudW1iZXJzID0gaXRlcnRvb2xzLmNvdW50KDIpCgogICAgICMgZ2VuZXJhdGUgcHJpbWVzIGZvcmV2ZXIKICAgICB3aGlsZSBUcnVlOgogICAgICAgICAjIGdldCB0aGUgZmlyc3QgbnVtYmVyIGZyb20gdGhlIGl0ZXJhdG9yIChhbHdheXMgYSBwcmltZSkKICAgICAgICAgcHJpbWUgPSBudW1iZXJzLm5leHQoKQogICAgICAgICB5aWVsZCBwcmltZQoKICAgICAgICAgIyB0aGlzIGNvZGUgaXRlcmF0aXZlbHkgYnVpbGRzIHVwIGEgY2hhaW4gb2YKICAgICAgICAgIyBmaWx0ZXJzLi4uc2xpZ2h0bHkgdHJpY2t5LCBidXQgcG9uZGVyIGl0IGEgYml0CiAgICAgICAgIG51bWJlcnMgPSBpdGVydG9vbHMuaWZpbHRlcihwcmltZS5fX3Jtb2RfXywgbnVtYmVycykKCmZvciBwIGluIGl0ZXJfcHJpbWVzKCk6CiAgICBpZiBwID4gMTAwMDoKICAgICAgICBicmVhawogICAgcHJpbnQgcA==