2

我用 Python 写了一个程序来生成素数这里是程序

def genPrimes(n):
    primes = [2]  # primes generated so far
    last = 3  # last number tried
    while last <= n:        
        for p in primes:
            if last % p == 0 and math.sqrt(p) <= last:
                break
        else:
            primes.append(last)
        last += 2
    return primes

http://codepad.org/d33tsQyT

这个程序正在产生一个正确的答案。如果您看到 else: 语句的缩进,它是错误放置的。如果我尝试将 else 语句放入 if 块解释器显示内存错误。谁能说出为什么会这样。

在此先感谢玛丽

4

2 回答 2

4

else实际附加到for循环中,如果程序没有跳出循环,则执行。在您的情况下,如果没有素数除以数字,它就会执行,因此该数字是素数并附加到列表中。

另请参阅文档

于 2013-01-24T01:03:29.193 回答
2

它没有放置不正确,python 假设您正在使用for-else循环。

文档

当与循环一起使用时,else 子句与 try 语句的 else 子句相比与 if 语句有更多的共同点:try 语句的 else 子句在没有异常发生时运行,而循环的 else 子句在没有中断发生时运行.

于 2013-01-24T01:03:37.747 回答