Найти максимальное общее значение которое нацело делит два заданных числа
Есть такая задача "Заданы две переменные для двух целых чисел, найти максимальное общее значение которое нацело делит два заданных числа."
Из условия я понимаю, что у нас к примеру есть let a = 20; let b = 30; максимальное общее значение которое нацело делит эти два числа будет 10. Но как мне все это реализовать при помощи цикла?
function fun(a, b)
{ a > b || ([a, b] = [b, a]);
let k = 1;
for (let i = 2; i <= b; ) {
if(!(b % i) && !(a % i) ) {
b /= i;
a /= i;
k *= i;
}
else i++
}
return k
}
alert(fun(20, 30));
Последний раз редактировалось рони, 12.11.2020 в 23:22.
найти максимальное общее значение которое нацело делит два заданных числа
Иными словами, требуется наибольший общения делитель. Советую реализовать алгоритм Евклида или бинарный алгоритм (см. Википедию). Вариант от Рони может работать долго, если числа здоровенные и хотя бы одно из них простое.