# HJ108 求最小公倍数
# 描述
正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。
输入描述:
输入两个正整数A和B。
输出描述:
输出A和B的最小公倍数。
示例1
输入:
5 7
输出:
35
示例2
输入:
2 4
输出:
4
# 解答
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void (async function () {
let line;
let num1;
let num2;
while ((line = await readline())) {
let tokens = line.split(" ");
num1 = parseInt(tokens[0]);
num2 = parseInt(tokens[1]);
}
console.log(getLcm(num1, num2));
})();
function getGcd(num1, num2) {
// 如果 num1 < num2,则交换两数
if (num1 < num2) {
[num1, num2] = [num2, num1];
}
let remainder;
while (true) {
remainder = num1 % num2;
if (remainder === 0) {
return num2;
}
num1 = num2;
num2 = remainder;
}
return 1;
}
function getLcm(num1, num2) {
const gcd = getGcd(num1, num2);
const lcm = (num1 * num2) / gcd;
return lcm;
}
# 知识点
求两数最大公约数:(GCD, greatest common divisor)
1. 被除数 / 除数,得到余数
2. 如果余数为 0,则除数为最小公约数
3. 如果余数不为 0,则 除数赋值给 被除数, 余数赋值给 除数,进行第 1 步
如, 64 和 18:
64 % 18 === 10
18 % 10 === 8
10 % 8 === 2
8 % 2 === 0 , 则 2 为最小公约数
求两数最小公倍数:(LCM, least common multiple)
最大公约数 × 最小公倍数 = 两数之积
# 参考
上一篇: 下一篇:
本章目录