Простой генератор Python в одну строку

Я пытаюсь создать генератор простых чисел в одной строке Python, как забавное упражнение.

Следующий код работает должным образом, но он слишком медленный:

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,

Поэтому я попытался сделать это, проверив только квадратный корень из j и 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,

Но это выводит:2 3 5 6 7 8

Так что, должно быть, что-то не так с моими индексами j и k, но я не понимаю.

Ответы на вопрос(4)

Ваш ответ на вопрос