我正在编写一个代码来找到前 n 个素数的乘积。
def num_primorial(n):
print(str(n) + "---\n2")
prime_count = 1
product = 2
i = 3
while prime_count < n:
is_prime = True
for j in range(3, i, 2):
if i % j == 0:
print(str(i) + "****" + str(j))
is_prime = False
break
if is_prime:
print(i)
product *= i
prime_count += 1
i+=2
return product
print(num_primorial(5))
但是,在 if 语句中:
if i % j == 0:
print(str(i) + "****" + str(j))
is_prime = False
break
即使打印语句正在工作并且正在循环,它也不会跳出 for 循环。
有人可以告诉我这是什么问题吗?
它正确退出,
由于while循环,for循环再次运行
您应该在 if 条件之后添加另一个中断以摆脱它,否则它会无限运行
当在 for 循环中使用 break 时,它仅从 for 循环中退出。你有一个永远不会退出的无限 while 循环,所以你一次又一次地进入 for 循环
在你的例子中 is_prime 总是假的所以计数永远不会改变
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句