首页 > 试题广场 >

求最小公倍数

[编程题]求最小公倍数
  • 热度指数:347125 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。

数据范围:

输入描述:

输入两个正整数A和B。



输出描述:

输出A和B的最小公倍数。

示例1

输入

5 7

输出

35
示例2

输入

2 4

输出

4
let str = readline();
let arr = str.split(' ');
let a = arr[0], b = arr[1]
function gys(num1,num2){
    if((num1-num2)<0){
        [num1,num2]=[num2,num1]
    }
    while(num2!=0){
        var temp2=num1%num2;
        num1=num2;
        num2=temp2;
    }
    return num1;//此时返回的就是最大公约数
}

function scm(a,b) {
    return a*b/gys(a,b)
}
console.log(scm(a,b))

发表于 2020-09-08 21:10:30 回复(0)
function getNum(a,b){    
   return a*b/getMin(a,b);
}

function getMin (a,b){
    let maxNum = Math.max(a,b);
    let minNum = Math.min(a,b);
    let sum1 = maxNum%minNum;
    if(sum1===0){
        return minNum;
    }else{
        return getMin(sum1,minNum);
    }
}
这样为啥不可以
发表于 2020-07-01 21:54:28 回复(0)
var fn = function(a, b){
    let max = Math.max(a,b);
    let min = Math.min(a,b);
    if(a == 1 || b == 1){
        return max;
    }
    let find = 0 ,result;
    for(let i = 1; i <= max; i++){
        let n1 = max * i;
        for(let j = 1; j <= max; j++){
            let n2 = min * j;
            if(n1 === n2){
                result = n1;
                find = 1;
                break;
            }
        }
        if(find) break;
    }
    return result;
}
为什么本地测试通过,牛客网提示  
你的输出为:
空.请检查一下你的代码,有没有循环输入处理多个case.点击查看如何处理多个case
什么鬼东西
发表于 2020-06-29 15:39:39 回复(0)
// 能运行通过,抄的别人的不懂,求解!!!
function LCM (n,m) {
    if(m === 0) returnn;
    returnLCM(m,n%m)
}
function GCD (n,m) {
    constmax = LCM(n,m)
    returnn*m/max
}
while(line=readline()){
    var lines = line.split(' ');
    var a = parseInt(lines[0]);
    var b = parseInt(lines[1]);
    print(GCD(a,b));
}
发表于 2020-06-18 14:19:51 回复(2)
最大公数为两数之积除以最大公约数。用JavaScript实现。
let line = readline();
let nums = line.split(' '),
    a = parseInt(nums[0]),
    b = parseInt(nums[1]);
function g(a, b) {
    return b === 0 ? a : g(b, a%b);
}
console.log((a*b) / g(a, b));


发表于 2020-06-04 10:43:02 回复(0)
首先求出两个数字的最大公约数,然后再用两数的乘积除以最大公约数,即可得到最小公倍数
发表于 2020-05-14 16:48:52 回复(0)
// 先求出最大公约数,然后再求最小公倍数
while(line=readline()){
    var arr = line.split(" ");
    var numA = parseInt(arr[0]);
    var numB = parseInt(arr[1]);
    console.log(numA * numB / getGcd(numA, numB));
}

function getGcd(m, n) {
    let max = Math.max(m, n);
    let min = Math.min(m, n);
    if(max % min === 0) {
        return min;
    } else {
        return getGcd(max % min, min);
    }
}

编辑于 2020-01-29 15:40:06 回复(0)
// 题目里面a和b是用\n分割的,测试用例中使用'空格'分隔的,我佛了。
const lines = [];
while(line = readline()) {
  lines.push(line);
}

const gcd = (a, b)=> a%b?gcd(b, a%b):b;
const lcm = (a, b) => a*b/gcd(a, b);

lines
    .map(str=>str.split(' '))
    .map(strArr=>strArr.map(strn => parseInt(strn, 10)))
    .map(arr=>lcm(arr[0], arr[1]))
    .forEach(print)

发表于 2019-07-26 14:46:11 回复(0)
var str = readline().split(" ")
var A = parseInt(str[0]);
var B = parseInt(str[1]);
var i = A > B ? B : A
var sum = 0;
                    for(i;i >0;i --){
                        if(A%i === 0 && B%i === 0){
                            sum = i;
                            break
                        }
                    }
console.log(A*B/sum)
发表于 2019-03-14 22:16:37 回复(0)
varreadline=require("readline");
varr1=readline.createInterface({
input:process.stdin,
output:process.stdout
});
r1.on("line",function(line){
line=line.trim();
vararr=line.split(' ');
varresult=maxNum(arr[0],arr[1]);
arr=[];
console.log(result);
})
functionmaxNum(num1,num2){
vartemp=Math.max(num1,num2);
vartmp=Math.min(num1,num2);
vari;
while(temp%tmp!=0){
i=temp%tmp;
temp=tmp;
tmp=i;
}
returnnum1*num2/tmp;
-----------------------------------------------------------------------------
var line=readline(); var result=[]; line=line.trim(); var arr=line.split(' '); var result=maxNum(arr[0],arr[1]); console.log(result); function maxNum(num1,num2){     var temp=Math.max(num1,num2);     var tmp=Math.min(num1,num2);     var i;     while(temp%tmp!=0){         i=temp%tmp;         temp=tmp;         tmp=i;     }     return num1*num2/tmp;}
编辑于 2018-06-13 17:01:46 回复(0)
题目输入示例有错误,一直纠结两行输入老出错,换成单行顺利通过了。。单行输入 5 7
最小公倍数 = 两数之积数/最大公约数
while(line = readline()){
    var arr = line.split(' ').map(function(item){
        return parseInt(item);
    });
    var a = parseInt(arr[0]), 
        b = parseInt(arr[1]);
    var num = a*b;
    while(a%b){
    var c = a%b;
        a = b;
        b = c;
    }
    console.log(num/b);
}

发表于 2017-09-21 10:24:56 回复(0)
已通过 JS 代码
var readline = require('readline')
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
})
function GCD(a,b){
    var temp;
    while(b % a){
        temp = a;
        a = b % a;
        b = temp;
    }
    return a;
}
rl.on('line', function(line) {
    var num = line.trim().split(' ').map(function(item){return parseInt(item);});
    console.log(num[0] * num[1] / GCD(num[0], num[1]));
})
发表于 2017-07-04 16:25:44 回复(0)
var readline = require("readline");

var rl = readline.createInterface({
    input:process.stdin,
    output:process.stdout
})

var cur = 0;
var firstNum = 0;
var secondNum = 0;
rl.on("line",function(line) {
    if(cur == 0) {
        firstNum = parseInt(line.trim());
    }
    else if(cur == 1){
        secondNum = parseInt(line.trim());
        rl.close();
       
    }
    cur++;
});

rl.on('close',function(){
    var min = Math.min(firstNum,secondNum);
    var max = Math.max(firstNum,secondNum);
    var i = max;
    var count = 1;
    while(!(i % min==0)){
        count++;
        i=max*count;
    }
    console.log(i)
})
这又怎么错了啊
发表于 2017-03-24 14:19:46 回复(0)
var readline = require('readline');
const rl = readline.createInterface({
        input: process.stdin,
        output: process.stdout
});
rl.on('line', function(line){
   var tokens = line.split(' ');
    //求a和b的最大公约数
    function gcd(a,b){
        if(b === 0){
            return a;
        }
        return gcd(b,a%b);
    }
    //求a和b的最小公倍数,其中需要a和b的最大公约数
    function lcm(a,b,gcd){
        return a*b/gcd;
    }
    var a = parseInt(tokens[0]);
    var b = parseInt(tokens[1])
    var gcd = gcd(a,b);
    var lcm = lcm(a,b,gcd);
    console.log(lcm);
});

发表于 2017-02-21 13:22:51 回复(0)
var readline= require('readline');
const rl=readline.createInterface({
    input:process.stdin,
    output:process.stdout   
});
var a=[];
var b=[];
var CountLength=0;
var mid1=0;
var mid2=0;
var j=0;
rl.on('line',function(line){
    a.push(line);
    if(a.length ==2)
    rl.close();
});
rl.on('close',function(){
    var one=new Number(a[0]);
    var two=new Number(a[1]);
    if(one>two){
        CountLength=one;
  
    }else{
        CountLength=two;
    }
    mid1=one;
    mid2=two;
    for(var i=1;i<CountLength;i++){
        if(((mid1/i)%1==0)&&((mid2/i)%1==0)){
            b[j]=i;
            j++;
            mid1=mid1/i;
            mid2=mid2/i;
        }
    }
    var r=mid1*mid2;
    for(var k=0;k<b.length;k++){
        
        r=r*b[k];
    }
    console.log(r);
})

324 7751 测试用例 在自己的node上面可以通过,在这个上面就不行额
发表于 2016-12-09 20:02:17 回复(0)
var readline=require("readline");
var r1=readline.createInterface({
    input:process.stdin,
    output:process.stdout
});
r1.on("line",function(line){
    line=line.trim();
    var arr=line.split(' ');
    var result=maxNum(arr[0],arr[1]);
    arr=[];
    console.log(result);
})
function maxNum(num1,num2){
    var temp=Math.max(num1,num2);
    var tmp=Math.min(num1,num2);
    var i;
    while(temp%tmp!=0){
        i=temp%tmp;
        temp=tmp;
        tmp=i;
    }
    return num1*num2/tmp;
}
思路应该都没有什么问题,给出的输入方式和实际输入不一致,给出的是多行输入,实际是单行输入,中间以空格隔开,哎,坑爹的题目。。。
发表于 2016-12-05 18:48:42 回复(0)

问题信息

难度:
17条回答 78071浏览

热门推荐

通过挑战的用户

查看代码