Python’da en büyük ortak böleni ve en küçük ortak katı hesaplayın ve alın

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)
  • Python 3.5 veya üzeri
    • GCD:math.gcd()(sadece iki argüman)
  • 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)

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
Copied title and URL