求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; } }
修正说明
- 调整循环逻辑:去掉了
count和end的控制,直接让number从100遍历到200,完全贴合你“计算100-200质数和”的需求。 - 修正打印时机:把打印语句移到整个
for循环外面,确保只输出最终的累加结果,不会再打印每一步的sum。 - 完善质数判断:补全了
isPrim方法,加入了边界条件处理,还优化了遍历范围到平方根,让质数判断更高效。
内容的提问来源于stack exchange,提问作者samatagi
相关产品推荐
相关产品推荐

