Skip to content

Latest commit

 

History

History
96 lines (67 loc) · 2.5 KB

lcm.md

File metadata and controls

96 lines (67 loc) · 2.5 KB
标题 标签
lcm(最小公倍数) math,intermediate(数学,两者之间)

返回两个或多个数字的最小公倍数。

  • 使用最大公约数 (GCD) 公式事实上也就是lcm(x,y) = abs(x * y) / gcd(x,y)来确定最小公倍数。
  • GCD 公式使用递归。

函数absgcd

特别说明

最小公倍数(Least Common Multiple,简称 LCM)是指两个或多个整数的共同倍数中最小的一个倍数。换句话说,它是能同时被这些整数整除的最小的正整数。

计算最小公倍数的方法

最小公倍数可以通过以下几种方法来计算:

  1. 通过质因数分解法
  • 将每个数分解成质因数。
  • 对于所有的质因数,取每个质因数的最高次幂。
  • 最小公倍数是这些质因数最高次幂的乘积。
  1. 通过辗转相除法求最大公约数 (GCD) 来计算可以使用以下公式来计算两个数的最小公倍数:

    LCM(a, b) = |a * b| / GCD(a, b)
    

    其中,GCD 是两个数的最大公约数。

  2. 通过列举倍数法

列出两个数的倍数,找到它们的最小共同倍数。

示例: 计算 12 和 18 的最小公倍数

方法 1: 质因数分解

  • 12 的质因数分解:12 = 22 * 3
  • 18 的质因数分解:18 = 2 * 32
  • 取所有质因数的最高次幂: 22 * 32 = 36
  • 所以,12 和 18 的最小公倍数是 36。

方法 2: 通过最大公约数 (GCD)

  • GCD(12,18) = 6(可以通过辗转相除法求得)
  • 使用公式计算最小公倍数: LCM(12,18) = |12 * 18| / GCD(12,18) = 216 / 6 = 36
  • 所以,12 和 18 的最小公倍数是 36。

方法 3:列举倍数

  • 12 的倍数:12, 24, 36, 48, 60, ...
  • 18 的倍数:18, 36, 54, 72, ...
  • 最小的共同倍数是 36。

javascript代码示例如下:

function gcd(a, b) {
    while (b !== 0) {
        let temp = b;
        b = a % b;
        a = temp;
    }
    return a;
}

function lcm(a, b) {
    return Math.abs(a * b) / gcd(a, b);
}

const result = lcm(12, 18);
console.log(result);  // 输出: 36

代码如下:

function lcm(...$nums) {
    $first = $nums[0];
    for($i = 1,$len = count($nums);$i < $len;$i++) {
        $first = abs($first * $nums[$i]) / gcd($first, $nums[$i]);
    }
    return $first;
}

使用方式:

lcm(12, 7); // 84
lcm(1, 3, 4, 5); // 60