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

质数求和程序异常:输入9时误将9判定为质数致结果错误

质数求和程序错误分析与修复

错误原因

  1. 核心逻辑错误:main函数中调用质数判断函数时,完全错误地使用了函数返回值。原代码中ifPrime(i); if(ifPrime) sum=sum+i;这部分,if(ifPrime)实际是在检查函数指针是否非空(永远为真),而非判断当前i是否为质数,导致所有奇数都被当成质数计入总和,包括9。
  2. 质数判断函数的健壮性缺失:原ifPrime函数没有处理小于2的数的情况,虽然当前循环从3开始暂时没触发问题,但函数本身逻辑不完整。

修正后的代码

完善的质数判断函数

bool ifPrime(int n) {
    if (n <= 1) return false;
    if (n == 2) return true;
    if (n % 2 == 0) return false;
    for(int i=3; i*i<=n; i+=2) {
        if(n%i==0) return false;
    }
    return true;
}

修正后的主函数

int main(){
    int t, sum=0;
    cin >> t;
    for(int k = 0; k < t; k++){
        int n;
        cin >> n;
        sum = 0;
        if(n >= 2) sum += 2;
        for(int i=3; i<=n; i+=2){
            if(ifPrime(i)){
                sum += i;
            }
        }
        cout << sum << endl;
    }
    return 0;
}

修正效果

输入9时,ifPrime(9)会检测到9能被3整除,返回false,不会将9计入总和,最终计算结果为2+3+5+7=17,符合正确预期。

内容的提问来源于stack exchange,提问作者MD NUR_ 33

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 06:32:11