如果2%2为0,为什么要打印2?

时间:2019-05-15 02:14:38

标签: python

总而言之,我知道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是第一个输出。

2 个答案:

答案 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的原因。

这还有助于将ifelse块保持在相同的缩进级别,以避免混淆计算机。