Generator Pythona w jednej linii

Próbuję stworzyć generator liczb pierwszych w jednej linii Pythona, tak samo jak fajne ćwiczenie.

Poniższy kod działa zgodnie z oczekiwaniami, ale jest zbyt wolny:

primes = lambda q: (i for i in xrange(1,q) if i not in [j*k for j in xrange(1,i) for k in xrange(1,i)])
for i in primes(10):
   print i,

Próbowałem to zrobić, sprawdzając tylko pierwiastek kwadratowy j i k:

primes = lambda q: (i for i in xrange(1,q) if i not in [j*k for j in xrange(1,int(round(math.sqrt(i)+1))) for k in xrange(1,int(round(math.sqrt(i)+1)))])
for i in primes(10):
   print i,

Ale to wychodzi:2 3 5 6 7 8

Więc musi być coś nie tak z moimi indeksami j i k, ale nie mam pojęcia.

questionAnswers(4)

yourAnswerToTheQuestion