[Edu-sig] Scratch pad nuttiness... (re generators)

kirby urner kirby.urner at gmail.com
Tue Mar 17 02:22:18 CET 2009

Writing for the Linux Gazette, Pramode C.E. shows us a nifty set of
generators for sieving out composites, adapted for Python 3 in the
source code below.  Is this really a sieve or trial-by-division?


def firstn(g, n):
	for i in range(n):
		yield next(g)

def intsfrom(i):
	while True:
		yield i
		i = i + 1

def exclude_multiples(n, ints):
	for i in ints:
		if (i % n): yield i

def sieve(ints):
	while True:
		prime = next(ints)
		yield prime
		ints = exclude_multiples(prime, ints)
if __name__ == '__main__':
	for i in firstn(sieve(intsfrom(2)), 400):

More information about the Edu-sig mailing list