← Все вопросы

Как посчитать НОД и НОК в Python для заданий 14 и 25 КЕГЭ?

Задан 29 дней назад471 просмотров4 ответа
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.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект