我试图迭代一个素数的列表,但是当我达到一定的极限时,我想停止。
def primetest(number,primelst):
limit = int(round(sqrt(number),0)+1)
while prime in primelst < limit:
if (number % prime) == 0:
return False
return True作为一个声明,这是有效的:
def primetest(number,primelst):
limit = int(round(sqrt(number),0)+1)
for prime in primelst:
if (number % prime) == 0:
return False
return True但这是缓慢的,因为它遍历all (素数),在这里,当它达到极限时,我希望迭代停止。因此,while语句似乎是一个更好的选择,但我无法找到正确的语法。
发布于 2017-04-11 15:26:33
只需在循环的主体中添加一个检查:
for prime in primelst:
if prime > limit:
break
# ...Update:我最初建议使用enumerate,但是当素数大于limit时,您实际上希望停止循环。
发布于 2017-04-11 15:36:09
如果您坚持使用while,则有一种循环使用在您的情况下可能有效的方法:
def primetest(number,primelst):
i=0
limit = int(round(sqrt(number),0)+1)
while primelst[i] < limit:
if (number % primelst[i]) == 0:
return False
i=i+1
return Truehttps://stackoverflow.com/questions/43350162
复制相似问题