<p>我试图在一行Python中创建质数生成器,作为一个有趣的练习。</p>
<p>以下代码按预期工作,但速度太慢:</p>
<pre><code>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,
</code></pre>
<p>所以我试着只检查j和k的平方根:</p>
<pre><code>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,
</code></pre>
<p>但它输出:<code>2 3 5 6 7 8</code></p>
<p>所以我的指数j和k肯定有问题,但我一点线索也没有。</p>