Ang sumusunod ay isang paglalarawan kung paano kalkulahin at makuha ang pinakadakilang common divisor at least common multiple sa Python.
- Ang pinakamalaking common divisor at least common multiple ng dalawang integer
- Ang pinakamalaking common divisor at least common multiple ng tatlo o higit pang integer
Tandaan na ang mga detalye ng mga function na ibinigay sa karaniwang library ay nag-iiba depende sa bersyon ng Python. Ang isang halimbawang pagpapatupad ng isang function na wala sa karaniwang library ay ipinapakita din sa artikulong ito.
- Python 3.4 o mas maaga
- GCD:
fractions.gcd()
(dalawang argumento lang)
- GCD:
- Python 3.5 o mas bago
- GCD:
math.gcd()
(dalawang argumento lang)
- GCD:
- Python 3.9 o mas bago
- GCD:
math.gcd()
(sumusuporta ng higit sa tatlong argumento) - least common denominator:
math.lcm()
(sumusuporta ng higit sa tatlong argumento)
- GCD:
Dito ipinapaliwanag namin ang pamamaraan gamit ang karaniwang library ng Python; Madaling magagamit ang NumPy upang kalkulahin ang pinakamalaking karaniwang divisor at hindi bababa sa karaniwang maramihang para sa bawat elemento ng maraming array.
Ang pinakamalaking common divisor at least common multiple ng dalawang integer
GCD
Dahil ang Python 3.5, mayroong gcd() function sa math module. Ang gcd() ay isang acronym para sa
- greatest common divisor
Ibinabalik ang pinakamalaking karaniwang divisor ng integer na tinukoy sa argumento.
import math
print(math.gcd(6, 4))
# 2
Tandaan na sa Python 3.4 at mas maaga, ang gcd() function ay nasa fractions module, hindi ang math module. dapat ma-import ang mga fraction at fractions.gcd().
least common denominator
Ang lcm() function, na nagbabalik ng hindi bababa sa karaniwang multiple, ay idinagdag sa math module sa Python 3.9. Ang lcm ay isang acronym para sa
- least common multiple
Ibinabalik ang hindi bababa sa karaniwang multiple ng integer na tinukoy sa argument.
print(math.lcm(6, 4))
# 12
Bago ang Python 3.8, ang lcm() ay hindi ibinigay, ngunit madaling kalkulahin gamit ang gcd().
lcm(a, b) = a * b / gcd(a, b)
Halimbawa ng Pagpapatupad.
def my_lcm(x, y):
return (x * y) // math.gcd(x, y)
print(my_lcm(6, 4))
# 12
/
Dahil nagreresulta ito sa decimal float, dalawang backslashes ang ginagamit upang putulin ang decimal point at ibalik ang resulta ng integer division. Tandaan na walang pagproseso na ginagawa upang matukoy kung ang argument ay isang integer o hindi.
Ang pinakamalaking common divisor at least common multiple ng tatlo o higit pang integer
Python 3.9 o mas bago
Simula sa Python 3.9, sinusuportahan ng lahat ng sumusunod na function ang higit sa tatlong argumento.
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
*
Kung gusto mong kalkulahin ang pinakamalaking common divisor o least common multiple ng mga elemento ng isang listahan, tukuyin ang argumento kasama nito.
l = [27, 18, 9, 3]
print(math.gcd(*l))
# 3
print(math.lcm(*l))
# 54
Python 3.8 o mas maaga
Bago ang Python 3.8, sinusuportahan lang ng gcd() function ang dalawang argumento.
Para mahanap ang pinakamalaking common divisor o least common multiple ng tatlo o higit pang integer, walang partikular na kumplikadong algorithm ang kinakailangan; kalkulahin lamang ang pinakadakilang karaniwang divisor o hindi bababa sa karaniwang maramihang para sa bawat isa sa maramihang mga halaga sa turn gamit ang mas mataas na-order na function na 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
Muli, tandaan na bago ang Python 3.4, ang gcd() function ay nasa fraction module, hindi ang math module.
least common denominator
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