Алгоритм Евклида
function gcd(a, b) {
a = Math.abs(a);
b = Math.abs(b);
while (b !== 0) {
[a, b] = [b, a % b];
}
return a;
}
gcd(48, 18);
Рекурсия: gcd(a, b) = b === 0 ? a : gcd(b, a % b).
В современном JS есть Math.gcd? (зависит от стандарта/окружения — на собеседовании лучше показать Евклида явно).
Итог
Евклид — короткое и ожидаемое решение; сложность логарифмическая от чисел.