Python prime generator em uma linha

Estou tentando criar um gerador de números primos em uma linha do Python apenas como um exercício divertido.

O código a seguir funciona conforme o esperado, mas é muito lento:

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,

Então eu tentei fazer isso apenas checando a raiz quadrada de j ek:

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,

Mas produz:2 3 5 6 7 8

Então deve haver algo errado com os meus índices j e k, mas não tenho a menor ideia.

questionAnswers(4)

yourAnswerToTheQuestion