题解 | #求最小公倍数#

求最小公倍数

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 的运行算例中时间相差不大
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-16 18:05
何尝不是一种学历歧视呢
码农索隆:楼主明确拒绝,并说明拒绝原因了,这hr倒是挺忠心护主的
点赞 评论 收藏
分享
零OFFER战士:另一个版本查看图片
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务