Aşağıda Python’da en büyük ortak bölenin ve en küçük ortak katın nasıl hesaplanacağı ve elde edileceği anlatılmaktadır.
- İki tamsayının en büyük ortak böleni ve en küçük ortak katı
- Üç veya daha fazla tamsayının en büyük ortak böleni ve en küçük ortak katı
Standart kitaplıkta sağlanan işlevlerin özelliklerinin Python sürümüne göre farklılık gösterdiğine dikkat edin. Bu makalede, standart kitaplıkta olmayan bir işlevin örnek uygulaması da gösterilmektedir.
- Python 3.4 veya öncesi
- GCD:
fractions.gcd()
(sadece iki argüman)
- GCD:
- Python 3.5 veya üzeri
- GCD:
math.gcd()
(sadece iki argüman)
- GCD:
- Python 3.9 veya üzeri
- GCD:
math.gcd()
(üçten fazla argümanı destekler) - en küçük ortak payda:
math.lcm()
(üçten fazla argümanı destekler)
- GCD:
Burada standart Python kütüphanesini kullanarak yöntemi açıklıyoruz; NumPy, birden çok dizinin her bir öğesi için en büyük ortak böleni ve en küçük ortak katını hesaplamak için kolayca kullanılabilir.
İki tamsayının en büyük ortak böleni ve en küçük ortak katı
GCD
Python 3.5’ten beri matematik modülünde bir gcd() işlevi vardır. gcd() bir kısaltmadır
- greatest common divisor
Bağımsız değişkende belirtilen tamsayının en büyük ortak bölenini döndürür.
import math
print(math.gcd(6, 4))
# 2
Python 3.4 ve önceki sürümlerde gcd() işlevinin matematik modülünde değil kesirler modülünde olduğunu unutmayın. kesirler içe aktarılmalı ve fractions.gcd().
en küçük ortak payda
En küçük ortak katı döndüren lcm() işlevi Python 3.9’daki matematik modülüne eklendi. lcm bir kısaltmadır
- least common multiple
Bağımsız değişkende belirtilen tam sayının en küçük ortak katını döndürür.
print(math.lcm(6, 4))
# 12
Python 3.8’den önce, lcm() sağlanmaz, ancak gcd() kullanılarak kolayca hesaplanabilir.
lcm(a, b) = a * b / gcd(a, b)
Uygulama Örneği.
def my_lcm(x, y):
return (x * y) // math.gcd(x, y)
print(my_lcm(6, 4))
# 12
/
Bu, ondalık bir kayan nokta ile sonuçlandığından, ondalık noktayı kesmek ve bir tamsayı bölme sonucu döndürmek için iki ters eğik çizgi kullanılır. Argümanın bir tamsayı olup olmadığını belirlemek için herhangi bir işlem yapılmadığını unutmayın.
Üç veya daha fazla tamsayının en büyük ortak böleni ve en küçük ortak katı
Python 3.9 veya üzeri
Python 3.9 ile başlayarak, aşağıdaki işlevlerin tümü üçten fazla bağımsız değişkeni destekler.
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
*
Bir listenin öğelerinin en büyük ortak böleni veya en küçük ortak katını hesaplamak istiyorsanız, argümanı bununla belirtin.
l = [27, 18, 9, 3]
print(math.gcd(*l))
# 3
print(math.lcm(*l))
# 54
Python 3.8 veya öncesi
Python 3.8’den önce, gcd() işlevi yalnızca iki argümanı destekliyordu.
Üç veya daha fazla tamsayının en büyük ortak böleni veya en küçük ortak katını bulmak için özellikle karmaşık bir algoritma gerekmez; sadece sırayla daha yüksek dereceli fonksiyon redüktörü kullanarak çoklu değerlerin her biri için en büyük ortak böleni veya en küçük ortak katını hesaplayın.
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
Yine Python 3.4’ten önce gcd() işlevinin matematik modülünde değil kesir modülünde olduğunu unutmayın.
en küçük ortak payda
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