python - 为什么这将 2 评估为素数?

标签 python

我一直在寻找答案,但没有找到,因此出现了这个问题。我对 python 文档(教程 4.4)中关于break语句的以下代码感到困惑。代码工作正常,但为什么 2 被发现是素数?第一次运行时,n % x 似乎是 2 % 2 == 0?关于范围的迭代方式,我缺少什么?

for n in range(2, 100):
    for x in range (2, n):
        if n % x == 0:
            print(n, 'equals', x, '*', n//x)
            break
    else:
        print(n, 'is prime')

其他类似代码首先排除 2,因为它是一个“特殊”素数,我无法弄清楚这段代码如何不这样做。

最佳答案

如果n为2,则2不在range(2, n)内。这是一个空范围。

range(a,b) 遍历大于或等于 a 且严格小于 b 的整数。

在你的程序中,语句

if n % x == 0:
    ...

处于针对给定范围内的每个 x 运行的循环中。如果范围为空,则循环执行零次,因此不检查任何因素。

关于python - 为什么这将 2 评估为素数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54091626/

相关文章:

python - IPython 找不到 Shell.IPShell 类

python - 如何绘制 Pandas 数据框的多列

python - Pandas 数据框中列中最接近的不相等行

python - Minimax 解释 "for dummies"

python - 如何仅通过使用 reduce 函数在 python 中创建字数统计输出?

python - 使用 Python SimpleXMLRPCServer 的无效 Unicode/XML?

python - Spark 在 Python 中使用 Map Reduce 分析大型 mbox 邮箱文件

python - 将数据帧从其他数据帧中删除两列

python - 用于侧面输入的高效 ParDo 设置或 start_bundle

python - 从(月日,年,HH :MM:SS) datetime format using Regex in Pyspark 中提取年份