Yafuatayo ni maelezo ya jinsi ya kuhesabu na kupata kigawanyiko kikubwa zaidi cha kawaida na nyingi za kawaida kwenye Python.
- Kigawanyiko kikuu cha kawaida na kizidishio kisicho cha kawaida kati ya nambari mbili kamili
- Kigawanyiko kikuu cha kawaida na kizidishio kisicho cha kawaida zaidi cha nambari tatu au zaidi
Kumbuka kuwa vipimo vya kazi zinazotolewa katika maktaba ya kawaida hutofautiana kulingana na toleo la Python. Utekelezaji wa mfano wa chaguo za kukokotoa ambazo haziko kwenye maktaba ya kawaida pia umeonyeshwa katika makala hii.
- Python 3.4 au mapema zaidi
- GCD:
fractions.gcd()
(hoja mbili tu)
- GCD:
- Chatu 3.5 au baadaye
- GCD:
math.gcd()
(hoja mbili tu)
- GCD:
- Chatu 3.9 au baadaye
- GCD:
math.gcd()
(inaunga mkono hoja zaidi ya tatu) - kiwango kidogo cha kawaida:
math.lcm()
(inaunga mkono hoja zaidi ya tatu)
- GCD:
Hapa tunaelezea njia kwa kutumia maktaba ya kawaida ya Python; NumPy inaweza kutumika kwa urahisi kukokotoa kigawanyaji kikubwa zaidi cha kawaida na kizidishio kisicho cha kawaida kwa kila kipengele cha safu nyingi.
Kigawanyiko kikuu cha kawaida na kizidishio kisicho cha kawaida kati ya nambari mbili kamili
GCD
Tangu Python 3.5, kuna kazi ya gcd() kwenye moduli ya hesabu. gcd() ni kifupi cha
- greatest common divisor
Hurejesha kigawanyo kikuu cha kawaida cha nambari kamili iliyobainishwa katika hoja.
import math
print(math.gcd(6, 4))
# 2
Kumbuka kuwa katika Python 3.4 na mapema, kazi ya gcd() iko kwenye moduli ya sehemu, sio moduli ya hesabu. sehemu lazima ziagizwe na fractions.gcd().
kiwango kidogo cha kawaida
lcm() chaguo la kukokotoa, ambalo hurejesha idadi ndogo zaidi ya kawaida, liliongezwa kwenye moduli ya hesabu katika Python 3.9. lcm ni kifupi cha
- least common multiple
Hurejesha kizidishio cha chini kabisa cha kawaida cha nambari kamili iliyobainishwa kwenye hoja.
print(math.lcm(6, 4))
# 12
Kabla ya Python 3.8, lcm() haijatolewa, lakini inaweza kuhesabiwa kwa urahisi kwa kutumia gcd().
lcm(a, b) = a * b / gcd(a, b)
Mfano wa Utekelezaji.
def my_lcm(x, y):
return (x * y) // math.gcd(x, y)
print(my_lcm(6, 4))
# 12
/
Kwa kuwa hii husababisha kuelea kwa desimali, mikwaruzo miwili ya nyuma hutumiwa kupunguza nukta ya desimali na kurudisha matokeo kamili ya mgawanyiko. Kumbuka kuwa hakuna uchakataji unaofanywa ili kubaini kama hoja ni nambari kamili au la.
Kigawanyiko kikuu cha kawaida na kizidishio kisicho cha kawaida zaidi cha nambari tatu au zaidi
Chatu 3.9 au baadaye
Kuanzia na Python 3.9, kazi zote zifuatazo zinaunga mkono hoja zaidi ya tatu.
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
*
Ikiwa ungependa kukokotoa kigawanyaji kikubwa zaidi cha kawaida au kizidishio kisicho cha kawaida zaidi cha vipengele vya orodha, bainisha hoja na hii.
l = [27, 18, 9, 3]
print(math.gcd(*l))
# 3
print(math.lcm(*l))
# 54
Python 3.8 au mapema zaidi
Kabla ya Python 3.8, kazi ya gcd() iliunga mkono hoja mbili tu.
Ili kupata kigawanyo kikubwa zaidi cha kawaida au kizidishio kisicho cha kawaida kati ya nambari tatu au zaidi, hakuna algoriti changamano inayohitajika; hesabu tu kigawanyaji kikubwa zaidi cha kawaida au kizidishio kisicho cha kawaida zaidi kwa kila moja ya thamani nyingi kwa zamu kwa kutumia chaguo la kukokotoa la mpangilio wa juu 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
Tena, kumbuka kuwa kabla ya Python 3.4, kazi ya gcd() iko kwenye moduli ya sehemu, sio moduli ya hesabu.
kiwango kidogo cha kawaida
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