You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python质数函数问题:is_prime(975)误判、n=2返回None的解决方法

问题分析与修复

原代码的核心错误

  1. 错误的提前返回:循环中只要第一次n % i != 0就返回True,导致仅检查了第一个因数(比如975和2取余不为0,直接返回True,完全没验证3、5等实际能整除它的数)。
  2. 边界情况未处理:当n=2时,range(2,2)是空序列,循环不执行,函数没有执行任何返回语句,默认返回None。

修复后的代码

def is_prime(n):
    # 小于2的数不是质数
    if n < 2:
        return False
    # 2是唯一的偶质数
    if n == 2:
        return True
    # 大于2的偶数直接排除
    if n % 2 == 0:
        return False
    # 只检查奇数因数,到n的平方根即可(优化性能)
    for i in range(3, int(n**0.5) + 1, 2):
        if n % i == 0:
            return False
    # 所有可能因数检查完毕,无整除则为质数
    return True

print(is_prime(975))  # 输出False
print(is_prime(2))    # 输出True

修复说明

  • 先处理边界值:直接判断小于2的数、等于2的数、大于2的偶数,快速返回结果,避免无效循环。
  • 循环优化:只检查奇数因数,且仅需验证到n的平方根(若n存在大于平方根的因数,必然对应一个更小的因数),提升运行效率。
  • 修正返回逻辑:只有当所有可能的因数都检查完毕且未找到整除项时,才返回True,彻底避免提前返回错误结果。

内容的提问来源于stack exchange,提问作者Foxee Saga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 06:52:03