Это была интересная проблема для решения.Я решил это таким образом, но я уверен, что есть лучшие пути.
Сначала я вычислил lmc между двумя самыми большими числами.
Затем я сравнил это число, умноженное на 1,затем 2, затем 3 и так далее, по модулю следующего наименьшего числа (максимальное число - 2), пока я не найду 0 в качестве результата.Затем я продолжал вычислять по модулю (максимальное число - 3), пока (максимальное число - n) = arr [0];
function lcm(nb1, nb2)
{
let i = 1;
let j = 1;
while (true)
{
for (j = 1; j <= i; ++j)
{
if ((nb1 * i) == (nb2 * j))
return (nb1 * i);
}
++i;
}
}
function smallestCommons(arr)
{
if (arr.length == 2)
{
biggestNumber = arr[1];
if (biggestNumber > 2)
{
let biggestCommon = lcm(arr[1] - 1, arr[1]);
let mul = 1;
for (let num = biggestNumber - 2; num > arr[0]; --num)
while (((biggestCommon * mul) % num) != 0)
++mul;
return (biggestCommon * mul);
}
else
return (biggestNumber);
}
}
console.log(smallestCommons([1, 5]));
console.log(smallestCommons([1, 3]));
console.log(smallestCommons([1, 42]));
console.log(smallestCommons([7, 10]));
console.log(smallestCommons([4, 5]));