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

如何实现计算指定范围内可被除数整除数字之和的Java方法?

如何正确实现sumDivisible方法

先说说你现有代码的问题:

  • 你定义的sum方法完全没实现累加逻辑,只是返回单个符合条件的数字,导致每次找到能被整除的数时,只会输出这个数本身,而不是所有符合条件数的总和。
  • 方法参数设计不合理,sum不需要传入from、div、to这些参数,也不需要把循环变量i传进去。
  • 循环里的打印逻辑错误,你应该在循环结束后打印最终的总和,而不是每次找到符合条件的数就打印一次。

正确的实现思路

要完成sumDivisible方法,只需要以下几步:

  1. 初始化一个变量用来存储累加的总和,初始值为0。
  2. 遍历[from, to]范围内的每一个数字。
  3. 对每个数字判断是否能被divisor整除(用i % divisor == 0判断,余数为0表示可以整除)。
  4. 如果符合条件,就把这个数字加到总和变量里。
  5. 遍历结束后,返回总和变量。

完整的修正代码

public class Main {
    public static void main(String[] args) {
        System.out.println("Example: divisor: 2, from: 2, to: 6");
        int from = 2;
        int to = 6;
        int divisor = 2;
        // 调用sumDivisible方法并打印结果
        int result = sumDivisible(from, to, divisor);
        System.out.println("Result: " + result); // 输出12
    }

    // 按照题目要求实现的方法
    public static int sumDivisible(int from, int to, int divisor) {
        int total = 0;
        // 遍历[from, to]的所有数字
        for (int i = from; i <= to; i++) {
            // 判断当前数字是否能被divisor整除
            if (i % divisor == 0) {
                total += i; // 累加符合条件的数字
            }
        }
        return total; // 返回总和
    }
}

额外优化(可选)

如果范围很大,循环遍历效率不高,可以用数学公式直接计算:

  • 找到范围内第一个能被divisor整除的数:first = ((from + divisor - 1) / divisor) * divisor,如果这个数大于to,说明没有符合条件的数,返回0。
  • 找到范围内最后一个能被divisor整除的数:last = (to / divisor) * divisor。
  • 符合条件的数是一个等差数列,项数count = (last - first) / divisor + 1。
  • 总和就是(first + last) * count / 2。

对应的优化代码:

public static int sumDivisible(int from, int to, int divisor) {
    if (divisor == 0) {
        throw new IllegalArgumentException("Divisor cannot be zero");
    }
    int first = ((from + divisor - 1) / divisor) * divisor;
    if (first > to) {
        return 0;
    }
    int last = (to / divisor) * divisor;
    int count = (last - first) / divisor + 1;
    return (first + last) * count / 2;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 02:15:42