在Python中生成的素数列表中有4个

时间:2013-12-16 11:45:23

标签: python

这是我的代码。

#Prime numbers between 0-100
for i in range(2,100):
    flg=0
    for j in range(2,int(i/2)):
        if i%j==0:
            flg=1
            break
    if flg!=1:
        print(i)

输出

2
3
4 <-
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97

我不知道为什么会有这个4。 请原谅我,如果我犯了一些愚蠢的错误,因为我似乎无法弄明白。

1 个答案:

答案 0 :(得分:11)

原因是范围不包括在内,即

>>> range(2,2)
[]

因此,当您访问4时,您不会检查除数。例如更改为range(2,int(i/2)+1)

为了加快计算速度,您可以使用math.sqrt而不是/ 2操作,例如:

import math

然后

for j in range(2, int(math.sqrt(i)+1)):