我是一名Python的初学者,很抱歉我的知识不足。我询问的原因是,在阅读Python手册和教程(http://docs.python.org/2.7/tutorial)时,我无法完全掌握循环的工作原理。我已经编写了一些简单的程序,所以我认为我掌握了基础知识,但由于某种原因,这个旨在列出所有小于或等于n的质数的程序并没有正常工作:
n = int(raw_input("What number should I go up to? "))
p = 2
while p <= n:
for i in range(2, p):
if p%i == 0:
p=p+1
print "%s" % p,
p=p+1
print "Done"
当我输入100时,输出结果如下:
2 3 5 7 11 13 17 19 23 27 29 31 35 37 41 43 47 53 59 61 67 71 73 79 83 87 89 95 97 101 Done
这个代码看起来基本正确,但是却包含了27、35、95这些合数数字。我一直在尝试分析我的循环方式,但是我不知道它为什么会突然跳过检查可除性的步骤。我认为如果有人看一眼代码,就可以解释一下语法上的问题所在。非常感谢!
i
变成5,您检查29是否可被5整除,但您从未检查小于5的数字。 - tacaswell