2017-05-29 36 views
2

目前試圖找到LCM使用JS爲一療程。看來工作沒有問題,但是當我提交我得到一個失敗的結果輸入226553150 1023473145,並且將返回46374212988031340當它應該返回46374212988031350感謝什麼可以做!發現錯誤在JavaScript LCM與較大的數字

var readline = require('readline'); 

process.stdin.setEncoding('utf8'); 
var rl = readline.createInterface({ 
input: process.stdin, 
terminal: false 
}); 

function lcm(a,b) { 
    return((a*b)/gcd(a,b)) 
} 

function gcd(a,b) { 
    if(b == 0){ 
    return a; 
    } 
    return gcd(b,(a%b)); 
} 




rl.on('line', (line) => { 
    var a = parseInt(line.toString().split(' ')[0]); 
    var b = parseInt(line.toString().split(' ')[1]); 
    console.log(lcm(a,b)); 
    rl.close(); 
}) 

回答

2

JavaScript中的最大安全整數是9007199254740991,結果比這個大。

使用big integer包來代表大整數。

+0

我只能提交一個文件 –

+1

顯然你得到正確的答案,如果你計算LCM像這樣'a *(b/gcd(a,b))' –

+0

這很奇怪,但很酷! –