素数程序中的范围函数

时间:2018-06-18 15:30:22

标签: python python-2.7

这是一个从2和11打印素数的程序。

for num in range(2,12):
    prime = True
    for i in range(2,num):
        if (num%i==0):
            prime = False
    if prime:
       print num

在最后一次迭代期间的第二个for循环中,num = 11的值..所以范围应该取num为10即(n-1)但是在这个程序中值11仍然被打印..怎么样是什么?

1 个答案:

答案 0 :(得分:0)

num确实是11,正在打印num

if prime:
    print num

range(2, num)范围从2到10(包括两者),但该范围内的for循环使用i作为目标,而不是num

for i in range(2, num):
#   ^  the target of the for loop

因此,i值,而不是num 的值从2到10,永远不会打印i。内部循环不会更改num的值,它始终保持设置为11。所以是的,如果打印10,那就令人惊讶

请注意,只有print num仍设置为prime时才会执行True行。如果False可以被任何num值整除,则会设置为i。对于11,2和10(含)之间没有可以除以11的值,因此prime仍然设置为True并打印num