Eftirfarandi er lýsing á því hvernig á að reikna út og fá stærsta sameiginlega deilinn og minnsta sameiginlega margfeldið í Python.
- Stærsti sameiginlegi deilirinn og minnsta sameiginlega margfeldið af tveimur heiltölum
- Stærsti sameiginlegi deilirinn og minnsta sameiginlega margfeldið af þremur eða fleiri heiltölum
Athugaðu að forskriftir aðgerða í venjulegu bókasafni eru mismunandi eftir Python útgáfunni. Dæmi um útfærslu á falli sem er ekki í venjulegu bókasafni er einnig sýnd í þessari grein.
- Python 3.4 eða eldri
- GCD:
fractions.gcd()
(aðeins tvö rök)
- GCD:
- Python 3.5 eða nýrri
- GCD:
math.gcd()
(aðeins tvö rök)
- GCD:
- Python 3.9 eða nýrri
- GCD:
math.gcd()
(styður fleiri en þrjú rök) - minnsti samnefnari:
math.lcm()
(styður fleiri en þrjú rök)
- GCD:
Hér útskýrum við aðferðina með því að nota staðlaða Python bókasafnið; Auðvelt er að nota NumPy til að reikna út stærsta sameiginlega deilinn og minnsta sameiginlega margfeldið fyrir hvern þátt í mörgum fylkjum.
Stærsti sameiginlegi deilirinn og minnsta sameiginlega margfeldið af tveimur heiltölum
GCD
Síðan Python 3.5 er gcd() fall í stærðfræðieiningunni. gcd() er skammstöfun fyrir
- greatest common divisor
Skilar stærsta sameiginlega deili heiltölunnar sem tilgreind er í rökseminni.
import math
print(math.gcd(6, 4))
# 2
Athugaðu að í Python 3.4 og eldri er gcd() fallið í brotaeiningunni, ekki stærðfræðieiningunni. brot verða að vera flutt inn og fractions.gcd().
minnsti samnefnari
lcm() fallinu, sem skilar minnstu sameiginlegu margfeldi, var bætt við stærðfræðieininguna í Python 3.9. lcm er skammstöfun fyrir
- least common multiple
Skilar minnsta sameiginlega margfeldi heiltölunnar sem tilgreind er í rökseminni.
print(math.lcm(6, 4))
# 12
Fyrir Python 3.8 er lcm() ekki veitt, en auðvelt er að reikna það út með gcd().
lcm(a, b) = a * b / gcd(a, b)
Dæmi um framkvæmd.
def my_lcm(x, y):
return (x * y) // math.gcd(x, y)
print(my_lcm(6, 4))
# 12
/
Þar sem þetta leiðir til tugaflots, eru tveir afturskáir notaðir til að stytta tugabrot og skila heiltöludeilingarniðurstöðu. Athugaðu að engin vinnsla er gerð til að ákvarða hvort röksemdin sé heiltala eða ekki.
Stærsti sameiginlegi deilirinn og minnsta sameiginlega margfeldið af þremur eða fleiri heiltölum
Python 3.9 eða nýrri
Frá og með Python 3.9 styðja allar eftirfarandi aðgerðir fleiri en þrjú rök.
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
*
Ef þú vilt reikna út stærsta sameiginlega deilinn eða minnsta sameiginlega margfeldið af þáttum lista, tilgreindu rökin með þessu.
l = [27, 18, 9, 3]
print(math.gcd(*l))
# 3
print(math.lcm(*l))
# 54
Python 3.8 eða eldri
Fyrir Python 3.8 studdi gcd() fallið aðeins tvær röksemdir.
Til að finna stærsta sameiginlega deilann eða minnsta sameiginlega margfeldið af þremur eða fleiri heiltölum þarf ekkert sérstaklega flókið reiknirit; reiknaðu bara stærsta sameiginlega deilinn eða minnstu sameiginlega margfeldið fyrir hvert af mörgum gildum aftur með því að nota hærri röð fallið 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
Athugaðu aftur að fyrir Python 3.4 er gcd() fallið í brotareiningunni, ekki stærðfræðieiningunni.
minnsti samnefnari
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