Следи опис како израчунати и добити највећи заједнички делилац и најмањи заједнички умножак у Питхон-у.
- Највећи заједнички делилац и најмањи заједнички вишекратник два цела броја
- Највећи заједнички делилац и најмањи заједнички вишекратник три или више целих бројева
Имајте на уму да се спецификације функција које се налазе у стандардној библиотеци разликују у зависности од верзије Питхон-а. Пример имплементације функције која није у стандардној библиотеци је такође приказан у овом чланку.
- Питхон 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