Как найти НОД нескольких чисел?

Дано n целых чисел. Требуется найти такое наибольшее целое число, на которое делятся все эти n чисел.

У меня есть код для нахождения нод двух чисел, но как реализовать нахождение нод нескольких чисел?


Ответы (2 шт):

Автор решения: entithat
import math
math.gcd(2, 6, 12)  # 2

math.gcd Changed in version 3.9: Added support for an arbitrary number of arguments. Formerly, only two arguments were supported.

До версии 3.9, но выше 3.5 можно скомбинировать так:

math.gcd(3, math.gcd(6, 12))  # 3

Пример:

from math import gcd
from functools import reduce

reduce(gcd, [3, 12, 6, 18])  # 3

Для версии ниже 3.5:

from functools import reduce

def gcd(a, b):
    return gcd(b, a % b) if b else a

reduce(gcd, [3, 6, 12])  # 3
→ Ссылка
Автор решения: Эникейщик

Берем первые два числа. Ищем НОД (назовем его nod). Берем третье число, ищем НОД к нему и nod. Повторять, пока числа не закончатся.

→ Ссылка