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

求100-200间所有质数的和,代码输出中间结果问题求助

别崩溃!我马上帮你搞定这个问题,先看看你的代码里的几个关键问题,再给你修正后的版本~

问题排查

我一眼看到了三个核心问题:

  • 范围完全错了:你要计算100到200的质数和,但代码里end = 11、number从10开始,这完全偏离了目标区间,而且用count控制循环的逻辑也不符合“遍历100-200所有数”的需求。
  • 打印时机不对:你每次找到质数累加后就立刻打印sum,自然会输出每一步的累加值,而不是最终结果,得把打印放到循环结束后。
  • 质数判断方法没写完:你的isPrim方法只写了开头,这会直接导致编译错误,必须补全完整的质数判断逻辑。
修正后的完整代码
public class Prim {
    public static void main(String[] args) {
        long sum = 0;
        // 直接遍历100到200的所有整数,符合你的需求
        for (int number = 100; number <= 200; number++) {
            if (isPrim(number)) {
                sum += number;
            }
        }
        // 循环结束后再打印最终的总和,这才是你要的结果
        System.out.println("100到200之间所有质数的和为:" + sum);
    }

    // 补全正确的质数判断方法
    public static boolean isPrim(int num) {
        // 小于2的数肯定不是质数
        if (num < 2) {
            return false;
        }
        // 2是唯一的偶质数
        if (num == 2) {
            return true;
        }
        // 除了2之外的偶数都不是质数,直接返回false
        if (num % 2 == 0) {
            return false;
        }
        // 只需要遍历到num的平方根,减少不必要的计算,提升效率
        for (int i = 3; i <= Math.sqrt(num); i += 2) {
            if (num % i == 0) {
                return false;
            }
        }
        return true;
    }
}
修正说明
  1. 调整循环逻辑:去掉了count和end的控制,直接让number从100遍历到200,完全贴合你“计算100-200质数和”的需求。
  2. 修正打印时机:把打印语句移到整个for循环外面,确保只输出最终的累加结果,不会再打印每一步的sum。
  3. 完善质数判断:补全了isPrim方法,加入了边界条件处理,还优化了遍历范围到平方根,让质数判断更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:32:58