Вылічыце і атрымайце найбольшы агульны дзельнік і найменшае агульнае кратнае ў Python

Бізнэс

Ніжэй прыводзіцца апісанне таго, як вылічыць і атрымаць найбольшы агульны дзельнік і найменшае агульнае кратнае ў Python.

  • Найбольшы агульны дзельнік і найменшае агульнае кратнае двух цэлых лікаў
  • Найбольшы агульны дзельнік і найменшае агульнае кратнае трох ці больш цэлых лікаў

Звярніце ўвагу, што спецыфікацыі функцый, прадстаўленыя ў стандартнай бібліятэцы, адрозніваюцца ў залежнасці ад версіі Python. Прыклад рэалізацыі функцыі, якой няма ў стандартнай бібліятэцы, таксама паказаны ў гэтым артыкуле.

  • Python 3.4 або раней
    • GCD:fractions.gcd()(толькі два аргументы)
  • Python 3.5 або больш позняй версіі
    • GCD:math.gcd()(толькі два аргументы)
  • Python 3.9 або больш позняй версіі
    • GCD:math.gcd()(падтрымлівае больш за тры аргументы)
    • найменшы агульны назоўнік:math.lcm()(падтрымлівае больш за тры аргументы)

Тут мы тлумачым метад з выкарыстаннем стандартнай бібліятэкі Python; NumPy можна лёгка выкарыстоўваць для вылічэння найбольшага агульнага дзельніка і найменшага агульнага кратнага для кожнага элемента некалькіх масіваў.

Найбольшы агульны дзельнік і найменшае агульнае кратнае двух цэлых лікаў

GCD

Пачынаючы з Python 3.5, у матэматычным модулі ёсць функцыя gcd(). gcd() – гэта абрэвіятура ад

  • greatest common divisor

Вяртае найбольшы агульны дзельнік цэлага ліку, указанага ў аргументе.

import math

print(math.gcd(6, 4))
# 2

Звярніце ўвагу, што ў Python 3.4 і раней функцыя gcd() знаходзіцца ў модулі дробаў, а не ў матэматычным модулі. фракцыі павінны быць імпартаваныя і fractions.gcd().

найменшы агульны назоўнік

Функцыя lcm(), якая вяртае найменшае агульнае кратнае, была дададзеная ў матэматычны модуль у Python 3.9. lcm – гэта абрэвіятура ад

  • least common multiple

Вяртае найменшае агульнае кратнае цэлага ліку, указанага ў аргументе.

print(math.lcm(6, 4))
# 12

Да Python 3.8 lcm() не прадастаўляўся, але можна было лёгка вылічыць з дапамогай gcd().

lcm(a, b) = a * b / gcd(a, b)

Прыклад рэалізацыі.

def my_lcm(x, y):
    return (x * y) // math.gcd(x, y)

print(my_lcm(6, 4))
# 12

/Паколькі гэта прыводзіць да дзесятковага плыву, дзве зваротныя косыя рысы выкарыстоўваюцца для абрэзкі дзесятковай коскі і вяртання выніку дзялення цэлага ліку. Звярніце ўвагу, што не праводзіцца апрацоўка, каб вызначыць, ці з’яўляецца аргумент цэлым лікам ці не.

Найбольшы агульны дзельнік і найменшае агульнае кратнае трох ці больш цэлых лікаў

Python 3.9 або больш позняй версіі

Пачынаючы з Python 3.9, усе наступныя функцыі падтрымліваюць больш за тры аргументы.

  • math.gcd()
  • math.lcm()
print(math.gcd(27, 18, 9))
# 9

print(math.gcd(27, 18, 9, 3))
# 3

print(math.lcm(27, 9, 3))
# 27

print(math.lcm(27, 18, 9, 3))
# 54

*Калі вы хочаце вылічыць найбольшы агульны дзельнік або найменшае агульнае кратнае элементаў спісу, укажыце аргумент з гэтым.

l = [27, 18, 9, 3]
print(math.gcd(*l))
# 3

print(math.lcm(*l))
# 54

Python 3.8 або раней

Да Python 3.8 функцыя gcd() падтрымлівала толькі два аргументы.

Каб знайсці найбольшы агульны дзельнік або найменшае агульнае кратнае трох ці больш цэлых лікаў, не патрабуецца асабліва складаны алгарытм; проста вылічыце найвялікшы агульны дзельнік або найменшае агульнае кратнае для кожнага з множных значэнняў па чарзе, выкарыстоўваючы функцыю вышэйшага парадку reduce().

GCD

from functools import reduce

def my_gcd(*numbers):
    return reduce(math.gcd, numbers)

print(my_gcd(27, 18, 9))
# 9

print(my_gcd(27, 18, 9, 3))
# 3

l = [27, 18, 9, 3]
print(my_gcd(*l))
# 3

Зноў жа звярніце ўвагу, што да Python 3.4 функцыя gcd() знаходзілася ў модулі дробу, а не ў матэматычным модулі.

найменшы агульны назоўнік

def my_lcm_base(x, y):
    return (x * y) // math.gcd(x, y)

def my_lcm(*numbers):
    return reduce(my_lcm_base, numbers, 1)

print(my_lcm(27, 9, 3))
# 27

print(my_lcm(27, 18, 9, 3))
# 54

l = [27, 18, 9, 3]
print(my_lcm(*l))
# 54
Copied title and URL