下面是用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

最佳答案

Python允许您为else语句指定for块。
else块在for之后执行,但前提是for正常终止(而不是中断)。
如果没有这个特性,就必须使用一个无关的标志变量来跟踪这个状态因此,在您的情况下,如果else不是真的,(candidate % x == 0)块将被执行。

关于python - python素数生成,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24831330/

10-11 01:04