题解 | #求最小公倍数#

求最小公倍数

http://www.nowcoder.com/practice/22948c2cad484e0291350abad86136c3

本题采用JavaScript Node acm模式处理输入输出

解法一:暴力解法,先设i为大数的一倍,判断i是否能整除小数,不行则给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])
    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 的运行算例中时间相差不大
全部评论

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务