在Python中查找素数(模运算符有麻烦吗?)

时间:2018-08-10 09:49:18

标签: python primes

我需要计算素数。我从一个单独的线程获得以下代码:

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的项目,需要进行精算。经过一番思考,我得到了一段类似于上面的代码,但是遇到了同样的问题,那就是我转向论坛并接受了这个问题。我想知道模数运算符在我的机器上是否起作用?

有人可以指出我要去哪里的地方吗?

1 个答案:

答案 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,立即停止内部循环!