我对另一个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).
为什么? 希望你能帮我解决这个问题,但是请不要提供其他方法来实现Prime Number算法!
答案 0 :(得分:1)
Python的range
不包含结束值。
range[start, end)
因此,在第一次迭代中,p
的值为2,range(2, 2)
为空列表。这就是输入else部分的原因。
print range(2, 2) # []