> Question: Is there a way to implement this algorithm using generator > expressions only -- no "yield" statements allowed?
Yes. Avoiding the yield statement is easy but one might eventually end up with two statements because one has to produce a side effect on the primes list. However we can use default parameters in lambdas and finally get a single expression which is a generator expression: g = (lambda primes = []: (n for n in count(2) \ if (lambda n, primes: (n in primes if primes and n<=primes [-1] \ else (primes.append(n) or True \ if all(n%p for p in primes if p <= sqrt(n)) \ else False)))(n, primes)))() assert g.next() == 2 assert g.next() == 3 assert g.next() == 5 assert g.next() == 7 -- http://mail.python.org/mailman/listinfo/python-list