Израчунајте и добијете највећи заједнички делилац и најмањи заједнички умножак у Питхон-у

Бусинесс

Следи опис како израчунати и добити највећи заједнички делилац и најмањи заједнички умножак у Питхон-у.

  • Највећи заједнички делилац и најмањи заједнички вишекратник два цела броја
  • Највећи заједнички делилац и најмањи заједнички вишекратник три или више целих бројева

Имајте на уму да се спецификације функција које се налазе у стандардној библиотеци разликују у зависности од верзије Питхон-а. Пример имплементације функције која није у стандардној библиотеци је такође приказан у овом чланку.

  • Питхон 3.4 или ранији
    • ГЦД:fractions.gcd()(само два аргумента)
  • Питхон 3.5 или новији
    • ГЦД:math.gcd()(само два аргумента)
  • Питхон 3.9 или новији
    • ГЦД:math.gcd()(подржава више од три аргумента)
    • најмањи заједнички именилац:math.lcm()(подржава више од три аргумента)

Овде објашњавамо метод коришћењем стандардне Питхон библиотеке; НумПи се лако може користити за израчунавање највећег заједничког делиоца и најмањег заједничког вишекратника за сваки елемент вишеструких низова.

Највећи заједнички делилац и најмањи заједнички вишекратник два цела броја

ГЦД

Од Питхон-а 3.5, постоји функција гцд() у математичком модулу. гцд() је акроним за

  • greatest common divisor

Враћа највећи заједнички делилац целог броја наведеног у аргументу.

import math

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

Имајте на уму да је у Питхон-у 3.4 и ранијим верзијама функција гцд() у модулу разломака, а не у математичком модулу. разломци морају бити увезени и фрацтионс.гцд().

најмањи заједнички именилац

Функција лцм(), која враћа најмањи заједнички умножак, додата је математичком модулу у Питхон-у 3.9. лцм је акроним за

  • least common multiple

Враћа најмањи заједнички вишекратник целог броја наведеног у аргументу.

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

Пре Питхон-а 3.8, лцм() није обезбеђен, али се може лако израчунати помоћу гцд().

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

/Пошто ово резултира децималним флоат-ом, две обрнуте косе црте се користе за скраћивање децималне запете и враћање резултата дељења целог броја. Имајте на уму да се не обрађује да би се утврдило да ли је аргумент цео број или не.

Највећи заједнички делилац и најмањи заједнички вишекратник три или више целих бројева

Питхон 3.9 или новији

Почевши од Питхон-а 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

Питхон 3.8 или ранији

Пре Питхон-а 3.8, функција гцд() је подржавала само два аргумента.

Да би се пронашао највећи заједнички делилац или најмањи заједнички умножак три или више целих бројева, није потребан посебно компликован алгоритам; само израчунајте највећи заједнички делилац или најмањи заједнички умножак за сваку од вишеструких вредности заузврат користећи функцију вишег реда редуцирати().

ГЦД

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

Опет, имајте на уму да је пре Питхон-а 3.4, функција гцд() била у модулу разломака, а не у математичком модулу.

најмањи заједнички именилац

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