Di Python de dabeşkera hevpar a herî mezin û pirjimara herî kêm hevpar hesab bikin û bistînin

Dikan

Li jêr ravekirinek e ku meriv çawa di Python de dabeşkera hevpar a herî mezin û pirjimara herî hindik hevpar hesab dike û digire.

  • Dabeşkera hevpar a herî mezin û pirjimara hevpar a herî kêm a du hejmaran
  • Dabeşkera hevpar a herî mezin û pirjimara herî kêm a sê an jî zêdetir hejmaran

Têbînî ku taybetmendiyên fonksiyonên ku di pirtûkxaneya standard de têne peyda kirin li gorî guhertoya Python-ê cûda dibin. Mînakek pêkanîna fonksiyonek ku ne di pirtûkxaneya standard de ye jî di vê gotarê de tê destnîşan kirin.

  • Python 3.4 an berê
    • GCD:fractions.gcd()(tenê du arguman)
  • Python 3.5 an paşê
    • GCD:math.gcd()(tenê du arguman)
  • Python 3.9 an paşê
    • GCD:math.gcd()(ji sê argumanan zêdetir piştgirî dike)
    • kêmtirîn hevpar:math.lcm()(ji sê argumanan zêdetir piştgirî dike)

Li vir em rêbazê bi karanîna pirtûkxaneya standard Python rave dikin; NumPy bi hêsanî dikare were bikar anîn da ku ji bo her hêmanek pir rêzikên dabeşkera hevpar a herî mezin û pirjimara herî kêm hevpar hesab bike.

Dabeşkera hevpar a herî mezin û pirjimara hevpar a herî kêm a du hejmaran

GCD

Ji Python 3.5 ve, di modula matematîkê de fonksiyonek gcd() heye. gcd() kurtenivîsa wê ye

  • greatest common divisor

Dabeşkera hevpar a herî mezin a ku di argumanê de hatî destnîşan kirin vedigerîne.

import math

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

Bala xwe bidinê ku di Python 3.4 û berê de, fonksiyona gcd() di modula perçeyan de ye, ne modula matematîkê. fraksiyon divê bên împortkirin û fractions.gcd().

kêmtirîn hevpar

Fonksiyona lcm(), ku pirjimara herî kêm hevpar vedigerîne, li modula matematîkê ya Python 3.9 hate zêdekirin. lcm kurteya wê ye

  • least common multiple

Pirjimara hindiktirîn a hevjimara ku di argumanê de hatî destnîşan kirin vedigerîne.

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

Berî Python 3.8, lcm () nayê peyda kirin, lê bi karanîna gcd () bi hêsanî dikare were hesibandin.

lcm(a, b) = a * b / gcd(a, b)

Mînak Pêkanînê.

def my_lcm(x, y):
    return (x * y) // math.gcd(x, y)

print(my_lcm(6, 4))
# 12

/Ji ber ku ev yek di floatek dehiyê de encam dide, du paşvekêşan têne bikar anîn da ku xala dehiyê qut bikin û encamek dabeşkirina jimarek vegerînin. Bala xwe bidinê ku pêvajoyek nayê kirin da ku diyar bike ka arguman jimarek tevde ye an na.

Dabeşkera hevpar a herî mezin û pirjimara herî kêm a sê an jî zêdetir hejmaran

Python 3.9 an paşê

Bi Python 3.9 dest pê dike, hemî fonksiyonên jêrîn ji sê argumanan zêdetir piştgirî dikin.

  • 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

*Heke hûn dixwazin dabeşkera hevpar a herî mezin an pirjimara herî kêm hevpar a hêmanên lîsteyê bihesibînin, bi vê argumanê diyar bikin.

l = [27, 18, 9, 3]
print(math.gcd(*l))
# 3

print(math.lcm(*l))
# 54

Python 3.8 an berê

Berî Python 3.8, fonksiyona gcd() tenê du arguman piştgirî dikir.

Ji bo dîtina dabeşkera hevpar a herî mezin an pirjimara herî hindik a sê an jî zêdetir hejmaran, algorîtmayek bi taybetî tevlihev ne hewce ye; tenê dabeşkera hevpar a herî mezin an pirjimara herî hindik a hevpar ji bo her yek ji çend nirxan bi dûv re bi karanîna fonksiyona rêza bilind kêm bike ().

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

Dîsa, bala xwe bidin ku berî Python 3.4, fonksiyona gcd () di modula perçeyê de ye, ne modula matematîkê.

kêmtirîn hevpar

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