Функция math.lcm() в Python

Python math 模块Модуль math в Python


В теории чиселнаименьшее общее кратное(Least Common Multiple, сокращённо LCM) — очень важное понятие. Оно используется для нахождения наименьшего среди общих кратных двух или более целых чисел.

math.lcm()— это функция, появившаяся в Python 3.9 и специально предназначенная для вычислениянаименьшего общего кратного (LCM)。

Пояснение термина: lcm— это сокращение от "Least Common Multiple", означающее "наименьшее общее кратное".


Базовый синтаксис и параметры

Формат синтаксиса

import math

math.lcm(*integers)

Описание параметра

  • Параметр: *integers- переменное число целых чисел (не менее одного)
  • Описание: целые числа, для которых нужно вычислить наименьшее общее кратное.

Возвращаемое значение

  • Возвращает наименьшее общее кратное всех входных целых чисел
  • Если передано только одно целое число, возвращает абсолютное значение этого числа
  • Если передан 0, возвращает 0

Примеры

Пример 1: базовое использование — вычисление НОК двух чисел

Пример

import math

print("НОК чисел 4 и 6:", math.lcm(4, 6))     # 12
print("НОК чисел 5 и 7:", math.lcm(5, 7))     # 35
print("НОК чисел 12 и 18:", math.lcm(12, 18)) # 36

# Проверка формулы
a, b = 4, 6
print(f"\n"Проверка: НОК({a}, {b}) = {a} * {b} / НОД({a}, {b}) = {a*b//math.gcd(a,b)}")

Результат выполнения:

4 和 6 的 LCM: 12
5 和 7 的 LCM: 35
12 和 18 的 LCM: 36

验证: LCM(4, 6) = 4 * 6 / GCD(4, 6) = 12

Пример 2: Вычисление НОК нескольких чисел

Пример

import math

print("НОК чисел 3, 4:", math.lcm(3, 4, 5))    # 60
print("НОК чисел 6, 8, 12:", math.lcm(6, 8, 12))  # 24
print("НОК чисел 2, 3, 4, 5:", math.lcm(2, 3, 4, 5)) # 60

Результат выполнения:

3, 4, 5 的 LCM: 60
6, 8, 12 的 LCM: 24
2, 3, 4, 5 的 LCM: 60

Пример 3: Обработка особых значений

Пример

import math

print("Одно целое число 7:", math.lcm(7))
print("НОК чисел 0 и 5:", math.lcm(0, 5))
print("НОК чисел -4 и:", math.lcm(-4, 6))

Результат выполнения:

单个整数 7: 7
0 和 5 的 LCM: 0
-4 和 6 的 LCM: 12

Пример 4: Применение вычислений — приведение дробей к общему знаменателю

Пример

import math

# Сложение дробей: 1/4 + 1/6
denom1, denom2 = 4, 6
common_denom = math.lcm(denom1, denom2)
numer1 = 1 * (common_denom // denom1)
numer2 = 1 * (common_denom // denom2)
result = numer1 + numer2
print(f"1/{denom1} + 1/{denom2} = {numer1}/{common_denom} + {numer2}/{common_denom} = {result}/{common_denom}")

Результат выполнения:

1/4 + 1/6 = 3/12 + 2/12 = 5/12

Пример 5: Практическое применение — Синхронизация циклов

Пример

import math

# Периоды трёх светофоров составляют 30, 45 и 60 секунд
light_cycles = [30, 45, 60]
sync_interval = math.lcm(*light_cycles)
print(f"Периоды светофоров: {light_cycles}")
print(f"Временной интервал для одновременного включения зелёного: {sync_interval} секунд")

Результат выполнения:

信号灯周期: [30, 45, 60]
同时变绿的时间间隔: 180 秒

Связь с НОД

Формула: LCM(a, b) = a × b / GCD(a, b)

Пример

import math

for a, b in [(4, 6), (8, 12), (15, 20)]:
    lcm_val = math.lcm(a, b)
    gcd_val = math.gcd(a, b)
    print(f"LCM({a}, {b}) = {lcm_val}, GCD({a}, {b}) = {gcd_val}, Проверка: {lcm_val * gcd_val} == {a*b} -> {lcm_val*gcd_val == a*b}")

Результат выполнения:

LCM(4, 6) = 12, GCD(4, 6) = 2, 验证: 24 == 24 -> True
LCM(8, 12) = 24, GCD(8, 12) = 4, 验证: 96 == 96 -> True
LCM(15, 20) = 60, GCD(15, 20) = 5, 验证: 300 == 300 -> True

Примечания

  • math.lcm()Доступно только в Python 3.9+
  • Отрицательные числа вычисляются с использованием их абсолютных значений
  • НОК для 0 и любого числа равно 0

Python math 模块Модуль math в Python

Другие расширения