python素数代

时间:2014-07-18 18:13:26

标签: python algorithm

下面是在python中打印n个素数的代码。这个程序工作正常,但我想知道控制流程。而else语句与之前的if条件不匹配。如果我尝试将其与if条件对齐,则执行会抛出错误。到底发生了什么。

candidate = 3
count = 2
#n is the number of prime numbers to be printed.
n = 10
print("2")
while(count < n):   
    for x in range(2, candidate):
        if(candidate % x == 0):
            break
    else:
        print(str(candidate))
        count +=1       
    if(count <= n):
        candidate+=1

2 个答案:

答案 0 :(得分:2)

else属于for循环

如果您阅读代码来自的Python doc,您会发现解释。

您可以将其读作“如果主循环完成而没有例外,将执行什么。”

答案 1 :(得分:0)

Python允许您为else语句指定for块。

else块在for之后执行,但,如果for正常终止(而不是中断)。

如果没有此功能,您必须使用无关的标志变量来跟踪此状态。因此,在您的情况下,如果else永远不为真,则会执行(candidate % x == 0)块。