Напишите функцию gcd
, которая вычисляет наибольший общий делитель последовательности чисел.
Параметрами функции выступают натуральные числа в произвольном количестве, но не менее одного.
Примечание
Ваше решение должно содержать только функции.
В решении не должно быть вызовов требуемых функций.
Пример
Ввод
result = gcd(3)
Вывод
result = 3
Ввод
result = gcd(36, 48, 156, 100500)
Вывод
result = 12
Решение
Развитие задач B. Функциональный НОД и F. НОД 2.0.
Фактически нам надо “скрестить” первую задачу со второй. Цель задачи – научить работать с переменным количеством входных данных с с помощью конструкции *args.
Посмотреть код
Решение
Python
# типовое решение
def gcd(*args):
a = list(args)
while len(a) > 1:
while a[1]:
a[0], a[1] = a[1], a[0] % a[1]
a.pop(1)
return a[0]
Решение
Python
# лаконичное решение
def gcd(*numbers):
a, *tail = numbers
for b in tail:
while b:
a, b = b, a % b
return a