题解 | #求最小公倍数#
求最小公倍数
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 的运行算例中时间相差不大