标题 | 标签 |
---|---|
lcm(最小公倍数) | math,intermediate(数学,两者之间) |
返回两个或多个数字的最小公倍数。
- 使用最大公约数 (GCD) 公式事实上也就是
lcm(x,y) = abs(x * y) / gcd(x,y)
来确定最小公倍数。 - GCD 公式使用递归。
最小公倍数(Least Common Multiple,简称 LCM)是指两个或多个整数的共同倍数中最小的一个倍数。换句话说,它是能同时被这些整数整除的最小的正整数。
最小公倍数可以通过以下几种方法来计算:
- 通过质因数分解法
- 将每个数分解成质因数。
- 对于所有的质因数,取每个质因数的最高次幂。
- 最小公倍数是这些质因数最高次幂的乘积。
-
通过辗转相除法求最大公约数 (GCD) 来计算可以使用以下公式来计算两个数的最小公倍数:
LCM(a, b) = |a * b| / GCD(a, b)
其中,GCD 是两个数的最大公约数。
-
通过列举倍数法
列出两个数的倍数,找到它们的最小共同倍数。
- 12 的质因数分解:12 = 22 * 3
- 18 的质因数分解:18 = 2 * 32
- 取所有质因数的最高次幂: 22 * 32 = 36
- 所以,12 和 18 的最小公倍数是 36。
- GCD(12,18) = 6(可以通过辗转相除法求得)
- 使用公式计算最小公倍数: LCM(12,18) = |12 * 18| / GCD(12,18) = 216 / 6 = 36
- 所以,12 和 18 的最小公倍数是 36。
- 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