【发布时间】:2019-02-19 09:22:13
【问题描述】:
此代码从 5 开始,并列出了您可以选择的以下素数,在本例中为以下 17 个素数。当我运行它时,会打印 25 和 49。为什么没有过滤掉?
start = 5
number = 1
divisor = 3
upper = start - 2
doc = open("hey.txt", "w")
while number <= 17:
if start % divisor == 0:
start = start + 2
divisor = 3
elif divisor == upper:
doc.write(str(start))
doc.write(", ")
number = number + 1
start = start + 2
divisor = 3
else:
divisor = divisor + 2
hey.txt: 5, 7, 11, 13, 17, 19, 23, 25, 29, 31, 35, 37, 41, 43, 47, 49, 53,
【问题讨论】:
-
看起来您只过滤掉了 2 或 3 的倍数,例如您还有 35 = 5 * 7。数字越多,您将获得其他更大素数的更多倍数。
-
是否打算只打印素数?
-
如果您的意图是生成素数 - 看看Sieve_of_Eratosthenes