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

如何仅用for循环计算从2开始的前16个2的倍数的乘积?求优化方案

优化实现方案

你的代码存在两个明显问题:

  • 手动计算乘积极易出错,比如你写的b=2*4*6*10*12*14*16*18*20*22*24*26*28*30*32里漏掉了8,直接导致乘积结果错误
  • 扩展性极差,如果后续需要计算前N个2的倍数的乘积,必须重新手动计算,效率极低

下面是仅用for循环的最优实现,循环内同时完成序列输出和乘积累积,无需手动计算:

public class Program30 {
    public static void main(String args[]) {
        long product = 1; // 使用long类型避免整数溢出
        for (int x = 1; x <= 16; x++) {
            int num = 2 * x;
            System.out.print(num + " ");
            product *= num; // 循环中自动累积乘积
        }
        System.out.println("\nThe product is " + product);
    }
}

关键说明:

  1. 避免溢出:前16个2的倍数的乘积是2×4×6×…×32 = 2^16 × 16!,结果为1374389534720000,远大于int类型的最大值(2147483647),因此必须用long类型存储乘积
  2. 移除无用代码:原代码中的Scanner未被使用,可以直接删除
  3. 逻辑统一:通过一次for循环同时完成序列生成、输出和乘积计算,代码简洁且不易出错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 02:01:49