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

如何正确修复质数判断函数?解决输入1返回True的错误问题

修复质数判断函数的问题

原函数的核心问题是未处理n ≤ 1的边界情况,根据质数定义(大于1的自然数,除了1和自身外无其他因数),这类数直接不属于质数范畴。同时原函数的循环逻辑可以优化,提升判断效率。

修复后的代码

def is_prime(n):
    # 小于等于1的数不是质数
    if n <= 1:
        return False
    # 2是唯一的偶质数
    if n == 2:
        return True
    # 除2外的偶数都不是质数
    if n % 2 == 0:
        return False
    # 遍历从3到n平方根的奇数,无需检查更大的数
    for i in range(3, int(n**0.5) + 1, 2):
        if n % i == 0:
            return False
    return True

print(is_prime(1))  # 输出False

关键修复点说明

  • 新增n <= 1的判断:直接返回False,解决了输入1时返回错误结果的问题,同时覆盖了0、负数等无效输入场景。
  • 单独处理n=2:避免进入后续循环,提升小数字的判断效率。
  • 排除偶合数:提前过滤除2外的所有偶数,减少循环次数。
  • 优化循环范围:只遍历到int(n**0.5) + 1,因为若n存在大于其平方根的因数,对应的另一个因数必然小于平方根,无需重复检查;同时步长设为2,只遍历奇数,进一步提升效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 17:46:08