我用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
该程序正在产生正确的答案。如果你看到else:语句的缩进,那么它被错误地放置了。如果我尝试在块解释器显示内存错误时放置else语句。谁能说出为什么会发生这种情况。
提前致谢 玛里埃什
答案 0 :(得分:4)
else
实际上附加到for
循环,并且如果程序没有突破循环则执行。在你的情况下,如果没有素数分成数字,它就会执行,因此数字是素数并被附加到列表中。
答案 1 :(得分:2)
它没有放错,python假设你正在使用for-else
循环。
来自docs:
当与循环一起使用时,else子句与 try语句的else子句比if语句的else子句:a try语句的else子句在没有异常发生时运行,并且a 当没有中断发生时,loop的else子句运行。