质数的生成器功能 [英] Generator function for prime numbers
本文介绍了质数的生成器功能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试编写一个生成器函数,用于按如下方式打印质数
I'm trying to write a generator function for printing prime numbers as follows
def getPrimes(n):
prime=True
i=2
while(i<n):
for a in range(2,i):
if(i%a==0):
prime=False
break
if(prime):
yield i
但是我没有得到想要的结果 p = getPrimes(100)应该给我一个生成器函数,该函数将素数从2迭代到100,但是我得到的结果是[2,3].我在做什么错了?
However I'm not getting the desired results p=getPrimes(100) should give me a generator function that will iterate primes from 2 through 100 but the result I'm getting is [2,3]. What am I doing wrong?
推荐答案
您需要将prime
重置为True
,作为while块中而不是之前的第一条语句.实际上,一旦您击中了一个复合数字,prime
就永远不会再为真,因此您再也不会产生任何数字了.
You need to reset prime
to True
as the first statement inside the while block, not before it. As it is, once you hit a single composite number, prime
will never be true again, so you'll never yield any more numbers.
这篇关于质数的生成器功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文