我有这段代码应该确定
2
和输入 num
之间的素数数量:
def count_primes(num):
i = 0
for item in range(2, num):
for n in range(2, item):
if item % n == 0:
break
i += 1
return i
这不起作用,因为每次通过外循环都会发生
i += 1
。我对如何组合 if
和 for
以使逻辑按照我想要的方式工作感到困惑。
当完整的内循环(
i += 1
)运行而没有找到for n in range(2, item):
的任何实例时,如何才能使
item % n == 0
仅发生?
您可以将
else
与 for
循环一起使用。
仅当 else
循环耗尽时,即在未中断的情况下完成时,才会执行 for
下的代码块。
for i in range(10):
# logic for each iteration
else:
# the code here will be executed only if the loop finished 10 successful iterations
这样做:
def count_primes(num):
i = 0
for item in range(num):
if item <= 1:
continue
for n in range(2, item):
if item % n == 0:
break
else:
i += 1
return i