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

Project Euler第1题使用while循环计算倍数和结果与预期不符排查

问题根因

你的计算结果比正确值多1000,问题出在循环终止逻辑:

  • 题目要求统计1000以内的自然数,即取值范围为小于1000的数,不包含1000本身。
  • 现有代码中,当n=1000时,会先进入循环体判断:1000是5的倍数,会被累加到sum中,之后n自增为1001才会触发终止条件退出循环,多计入的1000就是结果偏差的来源。

修复方案

方案1:调整终止判断阈值

将终止条件中的n > 1000修改为n >= 1000即可,修改后对应代码片段:

n = n + 1;
if(n >= 1000) {
    notFinished = false;
}

方案2:简化循环逻辑(更易读)

直接去掉冗余的notFinished变量,将while循环条件直接修改为数值范围判断,代码逻辑更清晰:

package net.projecteuler;

public class Problem01 {
    public static void main(String[] args) {
        int n = 0;
        int sum = 0;
        while(n < 1000) {
            if(n % 3 == 0 || n % 5 == 0) {
                sum += n;
            }
            n++;
        }
        System.out.print("符合条件的数的总和是 " + sum);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:06:03