1

我对另一个 for 循环中的 for-else 循环有一些疑问。所以这里有一个例子:

primelist = []
for p in range (2, x+1):
    print 'in first for'
    raw_input()
    for i in range(2, p):
        print 'in second for'
        if p%i == 0:
            print 'in if'
            raw_input()
            break
    else:
        print 'in else'
        raw_input()
        primelist = primelist + [p]
return primelist

如您所见,这是用于确定素数并将它们存储到列表中,以便以后可以检索它们。所以我的问题是第一个 for 循环。当我运行程序时,它会像这样进入:第一个 FOR 循环、ELSE、第一个 FOR 循环、第二个 FOR 循环等等。为什么它第一次跳到 ELSE?此外,如果我要求第 1000 个号码,我会得到:7919 和

for i in range(2, p)

和 7907 与

for i in range(2, p/2).

这是为什么?希望你能帮我解决这个问题,但请不要给出其他实现质数算法的方法!

4

1 回答 1

1

Pythonrange不包括结束值。

range[start, end)

因此,在第一次迭代中,值为p2 并且range(2, 2)是一个空列表。这就是输入 else 部分的原因。

print range(2, 2)  # []
于 2014-02-20T15:53:24.487 回答