我需要计算素数。我从一个单独的线程获得以下代码:
for p in range(2, n+1):
for i in range(2, p):
if p % i == 0:
break
else:
print p,
但是,当我自己运行时,我得到:
3 5 5 5 7 7 7 7 7 9 11 11 11 11 11 11 11 11 11 13 13 13 13 13 13 13 13 13 13 13 15 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 21 ....
其中有些显然不是素数。我面临的挑战是Euler的项目,需要进行精算。经过一番思考,我得到了一段类似于上面的代码,但是遇到了同样的问题,那就是我转向论坛并接受了这个问题。我想知道模数运算符在我的机器上是否起作用?
有人可以指出我要去哪里的地方吗?
答案 0 :(得分:1)
当您确定数字是复合数字时,便会中断。但是,如果不确定,还是可以打印。
由于巧妙的Python循环构造,修复很容易:
for p in range(2, n+1):
for i in range(2, p):
if p % i == 0:
break
else:
print p,
但是请,一旦i²>=p
,立即停止内部循环!