在我用Python生成的素数列表中有一个4
这是我的密码在我用Python生成的素数列表中有一个4,python,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
#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
2
3.
4原因是范围不包括在内,即
>>> range(2,2)
[]
所以当你访问4时,你不会检查除数。例如,更改为范围(2,int(i/2)+1)
要加快计算速度,可以使用math.sqrt代替/2操作,例如:
import math
然后
for j in range(2, int(math.sqrt(i)+1)):
实际上,在i/2
之前您不需要检查,int(math.sqrt(i))+1
就足够了。您不需要标志,只需在上为
添加一个else
。如果没有中断
,它将运行。检查任何偶数也是毫无意义的,因此范围(3100,2)
将为您节省50%的工作。请记住先从[2]
或打印(2)
开始。@alko:我可以向你保证,2的幂都不是奇数,也不会出现在range()
@Wooble()生成的奇数列表中。是的,你说得对。我看了其他范围:)