← Все вопросы
Как посчитать НОД и НОК в Python для заданий 14 и 25 КЕГЭ?
13
В некоторых заданиях (14, 25) нужно считать НОД или НОК, иногда сразу для нескольких чисел или для всего диапазона. Есть ли готовое в Python или писать алгоритм Евклида руками?
4 ответа
24
✓ Принятый ответ — помог автору
В Python всё уже есть в math:
import math
from functools import reduce
math.gcd(12, 18) # 6 — НОД
math.lcm(4, 6) # 12 — НОК (Python 3.9+)
# НОД/НОК списка чисел:
nums = [12, 18, 24, 30]
g = reduce(math.gcd, nums)
l = reduce(math.lcm, nums)
print(g, l)
math.gcd и math.lcm принимают несколько аргументов начиная с новых версий, но reduce работает везде. Если вдруг старый Python без lcm, считай через НОД: lcm = a * b // gcd(a, b). На КЕГЭ интерпретатор свежий, так что смело пользуйся math.lcm.
Хайрутин Штанчаев reduce для списка — то что нужно, когда чисел много · 20 дней назад
Арина Борисова `a*b // gcd(a,b)` — на случай древнего Python без math.lcm · 19 дней назад
9
math.gcd и math.lcm. Для списка — reduce(math.gcd, nums).
5
НОК через НОД: a * b // math.gcd(a, b). Только не a*b сначала переполнения боятся — в Python int безразмерный, так что норм.
4
math.gcd.
Ваш ответ
Войдите, чтобы ответить на вопрос.