Задача:
Создайте функцию, которая принимает два числа и возвращает их наибольший общий делитель (НОД). JavaScript.
План:
- Алгоритм решения
- Код программы
- Примеры входных данных и ожидаемых результатов
- Объяснение кода программы
- Блок-схема
Алгоритм решения:
-
Принимаем два числа
a
иb
в качестве аргументов функции. -
Преобразуем
a
иb
в их абсолютные значения с помощьюMath.abs()
. -
Запускаем цикл
while
, который продолжается, покаb
не станет равным 0:- Сохраняем текущее значение
b
во временную переменнуюtemp
. - Присваиваем
b
остаток от деленияa
наb
. - Присваиваем
a
значениеtemp
.
- Сохраняем текущее значение
-
Когда цикл завершается (т.е.
b
становится 0), возвращаем значениеa
, которое и является НОД.
Этот алгоритм реализует метод Евклида для нахождения наибольшего общего делителя двух чисел.
Код программы на языке JavaScript:
Код JavaScript
function gcd(a, b) {
a = Math.abs(a);
b = Math.abs(b);
while (b !== 0) {
let temp = b;
b = a % b;
a = temp;
}
return a;
}
Примеры входных данных и ожидаемых результатов:
Входные данные: gcd(48, 18)
Ожидаемый результат: 6
Входные данные: gcd(100, 75)
Ожидаемый результат: 25
Входные данные: gcd(17, 23)
Ожидаемый результат: 1
Входные данные: gcd(-54, 24)
Ожидаемый результат: 6
Входные данные: gcd(0, 8)
Ожидаемый результат: 8
Входные данные: gcd(1000, 1)
Ожидаемый результат: 1
Объяснение кода программы:
-
Объявление функции:
Определяется функцияfunction gcd(a, b) {
gcd
, принимающая два параметраa
иb
. -
Преобразование входных данных:
Используетсяa = Math.abs(a); b = Math.abs(b);
Math.abs()
для преобразования входных чисел в их абсолютные значения, чтобы алгоритм работал корректно с отрицательными числами. -
Цикл алгоритма Евклида:
Начинается циклwhile (b !== 0) {
while
, который продолжается, покаb
не станет равным 0. -
Обмен значений:
Внутри цикла происходит обмен значений:let temp = b; b = a % b; a = temp;
temp
сохраняет текущее значениеb
b
получает остаток от деленияa
наb
a
получает предыдущее значениеb
(сохраненное вtemp
)
-
Возврат результата:
После завершения цикла функция возвращает значениеreturn a;
a
, которое и является наибольшим общим делителем.