题解 | #求最小公倍数#
求最小公倍数
http://www.nowcoder.com/practice/22948c2cad484e0291350abad86136c3
本题采用JavaScript Node acm模式处理输入输出
解法一:暴力解法,先设i为大数的一倍,判断i是否能整除小数,不行则给i加一倍大数,直至能够整除小数
解法二:先用辗转相除法求最大公因数,再用两数相乘除以最大公因数得到最小公倍数
二者在 5 7 的运行算例中时间相差不大
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.on('line', function (line) {
const nums = line.split(' ');
let a=parseInt(nums[0])
let b=parseInt(nums[1])
let res = 0
if(a<b) [a,b]=[b,a]
let i=a
while (i%b!==0){
i=i+a
}
console.log(i);
});
解法二:先用辗转相除法求最大公因数,再用两数相乘除以最大公因数得到最小公倍数
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.on('line', function (line) {
//最大公因数法
const nums = line.split(' ');
let a=parseInt(nums[0])
let b=parseInt(nums[1])
if(a<b) [a,b]=[b,a]
let num=b
while(a%b!==0){
num = a % b
a = b
b = num
}
let beishu = parseInt(nums[0])*parseInt(nums[1])/b
console.log(beishu);
});
二者在 5 7 的运行算例中时间相差不大
