Я хочу вычислить наименьшее общее кратное массива значений, используя алгоритм Евклида
Я использую эту реализацию псевдокода: найдено в википедии
function gcd(a, b)
while b ≠ 0
t := b;
b := a mod b;
a := t;
return a;
Моя реализация javascript такая
function smallestCommons(arr) {
var gcm = arr.reduce(function(a,b){
let minNum = Math.min(a,b);
let maxNum = Math.max(a,b);
var placeHolder = 0;
while(minNum!==0){
placeHolder = maxNum;
maxNum = minNum;
minNum = placeHolder%minNum;
}
return (a*b)/(minNum);
},1);
return gcm;
}
smallestCommons([1,2,3,4,5]);
Я получаю сообщение об ошибке в цикле while
Бесконечная петля
РЕДАКТИРОВАТЬ Были внесены некоторые исправления, в конце функции gcm я использовал 0 в качестве начального начального значения, оно должно быть 1, так как вы не можете получить gcm из 0.
EDIT2 Ожидаемый результат должен быть 60, так как это наименьшее общее кратное 1,2,3,4,5.