C. Функциональный НОД 2.0

Напишите функцию 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
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии