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

如何使用JavaScript计算两个数的最小公倍数?作业技术求助

计算两个数的最小公倍数(JavaScript实现)

你的代码存在几个明显问题,导致无法正确计算最小公倍数(LCM,你代码里写的LMC应该是笔误),下面先指出问题,再给出两种可行的实现方案:

原代码的问题

  • 变量c未声明就直接使用,运行时会抛出ReferenceError
  • 循环条件逻辑混乱:c <= min中c没有初始值,且max > 1 && min > 1会提前终止循环,无法处理其中一个数为1的情况
  • if (i != 1)的判断逻辑和注释不符(注释写的是判断i≠0),且初始i=0时会跳过第一次循环,漏掉最小的质因数2
  • alert放在循环内部,每次循环都会弹出,而非在计算完成后输出最终结果
  • 质因数分解的逻辑不完整,没有处理完所有可能的质因数,也没处理最后剩余的max/min值

方案1:通过最大公约数(GCD)推导LCM

最小公倍数和最大公约数的关系公式是:LCM(a, b) = |a * b| / GCD(a, b),这个方法高效且逻辑简单,推荐使用。

实现代码

// 定义求最大公约数的函数(辗转相除法)
function gcd(a, b) {
  while (b !== 0) {
    let temp = b;
    b = a % b;
    a = temp;
  }
  return a;
}

// 定义求最小公倍数的函数
function lcm(a, b) {
  // 处理0的情况:0和任何数的LCM都是0
  if (a === 0 || b === 0) return 0;
  // 取绝对值避免负数影响
  return Math.abs(a * b) / gcd(a, b);
}

// 交互逻辑
const n1 = Number(prompt("请输入第一个数"));
const n2 = Number(prompt("请输入第二个数"));
const result = lcm(n1, n2);
alert(`第一个数:${n1}\n第二个数:${n2}\n最小公倍数:${result}`);

方案2:修正质因数分解的实现

如果你想坚持用质因数分解的思路,需要修正循环逻辑,完整遍历所有可能的质因数:

实现代码

let n1 = Number(prompt("请输入第一个数"));
let n2 = Number(prompt("请输入第二个数"));
let lcm = 1;
let currentFactor = 2; // 从最小的质因数开始遍历

// 处理0的情况
if (n1 === 0 || n2 === 0) {
  alert(`第一个数:${n1}\n第二个数:${n2}\n最小公倍数:0`);
} else {
  // 复制原始值,避免修改输入的数
  let num1 = Math.abs(n1);
  let num2 = Math.abs(n2);

  // 遍历所有可能的质因数,直到两个数都被分解完
  while (num1 > 1 || num2 > 1) {
    // 如果当前因数能同时整除两个数
    if (num1 % currentFactor === 0 && num2 % currentFactor === 0) {
      lcm *= currentFactor;
      num1 /= currentFactor;
      num2 /= currentFactor;
    } else if (num1 % currentFactor === 0) {
      // 只能整除第一个数
      lcm *= currentFactor;
      num1 /= currentFactor;
    } else if (num2 % currentFactor === 0) {
      // 只能整除第二个数
      lcm *= currentFactor;
      num2 /= currentFactor;
    } else {
      // 当前因数无法整除任何数,尝试下一个因数
      currentFactor++;
    }
  }

  alert(`第一个数:${n1}\n第二个数:${n2}\n最小公倍数:${lcm}`);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 03:07:10