python - 我用 Python 生成的素数列表中有一个 4

标签 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。 如果我犯了一些笨拙的错误,请原谅我,因为我似乎无法弄清楚。

最佳答案

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

>>> 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)):

关于python - 我用 Python 生成的素数列表中有一个 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20610157/

相关文章:

安装了Python 3,运行时出错

python - Python 3 和 SQLite3 的 `table "django_migrations "already exists` 错误

python - Fabric env.hosts 并以相同的方法运行 => 找不到主机

python - Spark2-submit 对 python 字典进行意外的自动排序

python - 使用 python 在文件中保留两个表达式(不包括)之间的连线

Python 字典 - 将数组附加到字典中的特定键。

python - Selenium - visibility_of_element_located : __init__() takes exactly 2 arguments (3 given)

python - 更改数据帧索引后的 pandas 版本 0.16.0 所有值都变为 NaN

python - Python/Pandas 中的 R 向量语法

python - 如何安排作业在云中执行 Python 脚本以将数据加载到 bigquery?