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

质数统计程序调试:count_primes(100)返回值异常排查

质数统计程序错误排查

你的count_primes(100)返回50而非25,核心问题出在check_primes函数的逻辑错误,导致大量非质数被误判为质数。

具体错误点:

  • 循环逻辑失效:while n < numb循环仅执行一次就直接return。比如判断9时,n=2,9%2≠0,函数立刻返回True,但9能被3整除,不是质数。这个循环根本没完成所有必要的因数检查。
  • 判断逻辑颠倒:质数判断的正确逻辑是:只要找到一个能整除目标数的因数,就判定为非质数(返回False);只有所有可能的因数都无法整除时,才判定为质数(返回True)。你的代码刚好相反,第一次遇到不能整除的数就返回True,完全不符合质数判定规则。

修正后的代码:

def check_primes(numb):
    # 小于等于1的数不是质数
    if numb <= 1:
        return False
    # 2是唯一的偶质数
    if numb == 2:
        return True
    # 偶数直接排除(除了2)
    if numb % 2 == 0:
        return False
    n = 3
    # 只需检查到平方根,减少不必要的循环次数
    while n * n <= numb:
        if numb % n == 0:
            return False
        n += 2  # 只检查奇数,提升效率
    return True

def count_primes(num):
    count = 0
    for m in range(2, num):
        if check_primes(m):
            count += 1
    return count

调用count_primes(100)会返回正确的25。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 04:35:53