Наименее распространенное множественное число: что не так с моим кодом?
function lcm(arr) {
arr = arr.sort(function(a, b) {
return a - b;
});
var j = 1;
var num = arr[0];
for (i = 1; i < arr.length; i++) {
while (num % arr[i] !== 0) {
j = j + 1;
num = j * arr[0];
}
arr[0] = num;
}
return num;
}
console.log(lcm([3, 5, 6, 10]));
Я пытаюсь найти наименьшее общее кратное для диапазона чисел в массиве. Код отлично работает для массива с двумя элементами, однако вывод для массивов с более чем двумя элементами, кажется, превышает ожидаемое значение. Может ли кто-нибудь помочь мне найти ошибку в моем коде?
Спасибо
1 ответ
Задавать j
вернуться к 1
каждый раз через цикл через элементы массива. В противном случае, когда вы обрабатываете следующий номер, вы начинаете с высокого множителя.
// function that find the least common multiple
function lcm(arr) {
arr = arr.sort(function(a, b) {
return a - b;
});
var num = arr[0];
for (i = 1; i < arr.length; i++) {
var j = 1;
while (num % arr[i] !== 0) {
j = j + 1;
num = j * arr[0];
}
arr[0] = num;
}
return num;
}
console.log(lcm([3, 5, 6, 10]));