Ing ngisor iki minangka katrangan babagan carane ngetung lan entuk divisor umum paling gedhe lan kelipatan paling ora umum ing Python.
- Pembagi umum paling gedhe lan kelipatan umum paling ora saka rong integer
- Pembagi umum paling gedhe lan kelipatan umum paling sithik saka telu utawa luwih wilangan bulat
Elinga yen spesifikasi fungsi sing kasedhiya ing perpustakaan standar beda-beda gumantung saka versi Python. Conto implementasi fungsi sing ora ana ing perpustakaan standar uga ditampilake ing artikel iki.
- Python 3.4 utawa sadurungé
- GCD:
fractions.gcd()
(mung rong argumentasi)
- GCD:
- Python 3.5 utawa mengko
- GCD:
math.gcd()
(mung rong argumentasi)
- GCD:
- Python 3.9 utawa mengko
- GCD:
math.gcd()
(ndhukung luwih saka telung argumen) - denominator paling umum:
math.lcm()
(ndhukung luwih saka telung argumen)
- GCD:
Kene kita nerangake cara nggunakake perpustakaan Python standar; NumPy bisa gampang digunakake kanggo ngetung divisor umum paling gedhe lan kelipatan paling umum kanggo saben unsur sawetara array.
Pembagi umum paling gedhe lan kelipatan umum paling ora saka rong integer
GCD
Wiwit Python 3.5, ana fungsi gcd () ing modul math. gcd() minangka akronim kanggo
- greatest common divisor
Ngasilake pembagi umum paling gedhe saka integer sing ditemtokake ing argumentasi.
import math
print(math.gcd(6, 4))
# 2
Elinga yen ing Python 3.4 lan sadurungé, fungsi gcd () ing modul pecahan, ora modul math. pecahan kudu diimpor lan fractions.gcd ().
denominator paling umum
Fungsi lcm (), sing ngasilake paling ora umum, ditambahake menyang modul matematika ing Python 3.9. lcm minangka akronim kanggo
- least common multiple
Ngasilake kelipatan paling umum saka integer sing ditemtokake ing argumen.
print(math.lcm(6, 4))
# 12
Sadurunge Python 3.8, lcm () ora kasedhiya, nanging bisa gampang diwilang nggunakake gcd ().
lcm(a, b) = a * b / gcd(a, b)
Tuladha Implementasine.
def my_lcm(x, y):
return (x * y) // math.gcd(x, y)
print(my_lcm(6, 4))
# 12
/
Amarga iki nyebabake float desimal, rong garis miring mundur digunakake kanggo ngethok titik desimal lan ngasilake asil divisi integer. Elinga yen ora ana pangolahan sing ditindakake kanggo nemtokake manawa argumen kasebut minangka integer utawa ora.
Pembagi umum paling gedhe lan kelipatan umum paling sithik saka telu utawa luwih wilangan bulat
Python 3.9 utawa mengko
Miwiti karo Python 3.9, kabeh fungsi ing ngisor iki ndhukung luwih saka telung argumen.
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
*
Yen sampeyan pengin ngetung divisor umum paling gedhe utawa kelipatan paling umum saka unsur dhaptar, nemtokake argumen karo iki.
l = [27, 18, 9, 3]
print(math.gcd(*l))
# 3
print(math.lcm(*l))
# 54
Python 3.8 utawa sadurungé
Sadurunge Python 3.8, fungsi gcd () mung ndhukung rong argumen.
Kanggo nemokake pembagi umum paling gedhe utawa kelipatan paling umum saka telu utawa luwih wilangan bulat, ora ana algoritma sing rumit sing dibutuhake; mung ngetung divisor umum paling gedhe utawa sawetara paling umum kanggo saben nilai sawetara ing siji nggunakake fungsi-urutan luwih nyuda ().
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
Maneh, elinga sadurunge Python 3.4, fungsi gcd () ing modul pecahan, ora modul math.
denominator paling umum
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