总而言之,我知道2是质数,因为它可以被1本身整除,但是如果2%2 = 0并且范围在2和您要检查的数字之间,为什么它仍会打印2。这种情况是2。不是从3开始吗?
for num in range (1, 1000):
if num > 1:
for i in range (2, num):
if (num % i ) == 0:
break
else:
print (num)
我希望3是第一个输出。
答案 0 :(得分:0)
2
之所以打印,是因为for i in range(2, num)
在num == 2
时不执行任何迭代。这是因为range()
的第二个参数未包含在range()
生成的列表中。因此,对于外循环的2
迭代,等效的迭代代码为:
num = 2
if num > 1:
for i in []:
if (num % i ) == 0:
break
else:
print (num)
由于不会执行'break'行,因此它将打印2
。
答案 1 :(得分:0)
Python for
循环包含第一个数字,但排除最后一个数字。因此,子句for i in range(2,2)
实际上不会返回任何数字。这就是为什么在您的else
块中打印数字2的原因。
这还有助于将if
和else
块保持在相同的缩进级别,以避免混淆计算机。