<html><head></head>
<body><script>
function GCD(a, b) {
if (a == 0) {
return b;
}
return GCD(b % a, a);
}
function difference(array) {
for (var i = Math.min(...array) + 1; i < Math.max(...array); i++) {
array.push(i);
}
array.sort((a, b) => a - b);
}
function smallestCommons(arr) {
difference(arr);
console.log(arr);
a = arr[arr.length - 1];
b = arr[arr.length - 2];
var LCM = a * b / GCD(a, b);
while (true) {
var index = arr.findIndex(element => LCM % element !== 0);
if (index === -1) {
return LCM;
}
LCM *= arr[index];
console.log(LCM);
}
}
smallestCommons([1, 5]) // right
smallestCommons([2, 10]) // right
smallestCommons([1, 13]) // wrong
smallestCommons([23, 18]) // wrong
</script></body>
</html>
Это код для этого вызова:
https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/smallest-common-multiple/
Алгоритм, который я использую:
1-Рассчитать LCM двух самых больших чисел.
2- Попробуйте число LCM% на всем массиве, и если вы найдете число, которое не возвращает 0, присвойте его индексу var и умножьте его * LCM, затем продолжайте делать это до тех пор, пока оно ничего не найдет, и вместо этого возвращает -1, когда это произойдет, верните LCM наконец.
Код работает на первых двух массивах, но он не работает на последних двух, что заставило меня задуматься, является ли мой алгоритм неправильным, и я просто трачу свое время, пытаясь настроить его, или это правильно, и ему просто нужно немного твики?
Обратите внимание, что есть 3 разные функции, первая функция вычисляет GCD для последующего вычисления LCM, затем вторая функция помещает значения между двумя значениями в массиве и затем сортирует его, а третья функция вычисляет LCM (Lowest Common Multiple )
Проблема в том, что последние вторые массивы:
smalllestCommons ([1, 13]) возвращает 4324320 вместо 360360
smalllestCommons ([23, 18]) возвращает 72681840 вместо 6056820
Итак, что я хочу знать, пожалуйста, сосредоточьтесь на этом:
Является ли весь мой путь (алгоритм) неправильным, и мне нужно переписать целый или нужны некоторые настройки для работы?
Пожалуйста, не давайте мне готовых кодов. Просто скажите мне, что я хочу знать, и спасибо (: