En küçük ortak kat sayısı (EKOK) iki veya daha fazla tam sayının en küçük ortak katıdır. Bir tam sayının katları o tam sayının pozitif çarpanlarıdır. EKOK, bu sayının tüm pozitif çarpanlarının katıdır. Örneğin 3 ve 5 için 15, 12 ve 18 için 36’dir.
En Küçük Ortak Kat Sayısı (EKOK) Nedir?
En küçük ortak kat sayısı (EKOK) iki veya daha fazla tam sayının en küçük ortak katıdır. Bir tam sayının katları o tam sayının pozitif çarpanlarıdır. EKOK, bu sayının tüm pozitif çarpanlarının katıdır. Örneğin 3 ve 5 için 15, 12 ve 18 için 36’dir.
Ortak çarpanlar da mevcuttur ve bu çarpanların en büyüğü ekok‘tur. Örneğin 15 ve 30 için ekok 30, 36 ve 60 için ekok 180’dir. EKOK, genellikle iki sayı ile hesaplanır. Ancak birden fazla sayının ekoku hesaplanabilir.
Not: En küçük ortak kat sayısı ile en büyük ortak bölen (EBOB) arasındaki ilişki şudur;
- Ekok(a,b) * EBOB(a,b) = a * b
Aynı zamanda ekok, her bir sayı ile en büyük ortak bölenin çarpımına da eşittir:
- Ekok(a,b) = (a * b) / EBOB(a,b)
Python ile EKOK Hesaplama
Pythonda iki tam sayının en küçük ortak katını hesaplamak oldukça kolaydır. Bunun için üç farklı yöntem kullanılabilir:
1. Yöntem: Kullanıcıdan Değer Alma ile EKOK Hesaplama
Kullanıcıdan değer alıp en küçük ortak katı hesaplayan bir program:
# Python program to find LCM of two numbers
# Function to find LCM
# of two numbers
def find_lcm(x, y):
if x > y:
greater = x
else:
greater = y
while True:
if greater % x == 0 and greater % y == 0:
lcm = greater
break
greater += 1
return lcm
num1 = int(input("Enter first number: "))
num2 = int(input("Enter second number: "))
lcm = find_lcm(num1, num2)
print(f"LCM of {num1} and {num2} is: {lcm}")
Yukarıdaki programda kullanıcının girdiği iki tam sayının en küçük ortak katını hesaplamak için bir fonksiyon tanımlanmıştır. Fonksiyonun içeriği şu şekildedir;
- İlk önce iki sayı karşılaştırılır ve daha büyük olan sayı greater değişkenine atanır.
- while döngüsüne girilir ve greater değişkeni sıfır kalmayana kadar artırılır.
- Döngü içerisinde greater mod operatörü kullanılarak x ve y değerleriyle bölünür.
- Bölümden kalan sıfırsa bu durumda greater değişkeni lcm değişkenine atanır.
- Bölümden kalan sıfır değilse döngü bir kez daha döner ve yine sıfır kalmayana kadar devam eder.
- Döngü içerisinde kalan sıfır olduğunda lcm değişkeni return ile döndürülür.
- Döngü dışındaki main metodunda ise ilk önce kullanıcıdan sayı istenir.
- Kullanıcıdan alınan değerler find_lcm() metoduna parametre olarak geçirilir.
- Döndürülen değer lcm değişkenine atanır ve print() fonksiyonu ile konsola yazdırılır.
- Programın çıktısı:
Enter first number: 3
Enter second number: 5
LCM of 3 and 5 is: 15
2. Yöntem: Recursion ile EKOK Hesaplama
Aşağıdaki programda iki sayının ekoku hesaplanırken recursion yöntemi kullanılmıştır:
# Python program to find LCM of two numbers
# Function to find LCM
# of two numbers
def find_lcm(x, y):
# Choose the greater number
if x > y:
greater = x
else:
greater = y
while True:
if greater % x == 0 and greater % y == 0:
lcm = greater
break
greater += 1
return lcm
# Taking input from user
num1 = int(input("Enter first number: "))
num2 = int(input("Enter second number: "))
lcm = find_lcm(num1, num2)
print(f"LCM of {num1} and {num2} is: {lcm}")
math.lcm()
metodu kullanılarak iki sayının ekoku hesaplanabilir:
# Python program to find LCM of two numbers using math library
import math
num1 = int(input("Enter first number: "))
um2 = int(input("Enter second number: "))
lcm = math.lcm(num1, num2)
print(f"LCM of {num1} and {num2} is: {lcm}")
3. Yöntem: MCD ile EKOK Hesaplama
MCD yani en büyük ortak bölen kullanılarak en küçük ortak kat hesaplama:
# Python program to find LCM of two numbers using MCD method
def compute_gcd(x, y):
while(y):
x, y = y, x % y
return x
# Function to find LCM of two numbers
def compute_lcm(x, y):
return (x * y) // compute_gcd(x, y)
# Taking input from user
n1 = int(input("Enter first number: "))
n2 = int(input("Enter second number: "))
lcm = compute_lcm(n1, n2)
print(f"The LCM of {n1} and {n2} is {lcm}")
Kullanıcıdan iki tam sayı alınıp bu sayıların en büyük ortak böleni hesaplanır. Bu hesaplama fonksiyona parametre olarak geçilir ve döndürülen değer lcm‘e atanır. Bu değer de ekrana yazdırılır.
Pythonda En Küçük Ortak Kat Sayısı Hesaplama (EKOK)
Pythonda en küçük ortak kat sayısı hesaplama işlemi birçok farklı yöntemle yapılabilir. Yukarıda kullanılan yöntemlerden bazıları aşağıda verilmiştir:
Örnek 1: Kullanıcıdan Değer Alma ile EKOK Hesaplama
# Python program to find LCM of two numbers using function
def find_lcm(x, y):
# choose the greater number
if x > y:
greater = x
else:
greater = y
while True:
if greater % x == 0 and greater % y == 0:
lcm = greater
break
greater += 1
return lcm
# take input from the user
n1 = int(input("Enter first number: "))
n2 = int(input("Enter second number: "))
lcm = find_lcm(n1, n2)
print(f"The LCM of {num1} and {num2} is {lcm}")
Yukarıdaki kodda kullanıcıdan tam sayı olarak iki sayı alınıp fonksiyona gönderilir. Fonksiyondan dönen değer ekrana yazdırılır.
Örnek 2: Recursion ile EKOK Hesaplama
# Python program to find LCM of two numbers using recursion
def find_gcd(x, y):
# Function to return gcd of a and b
if(y == 0):
return x
return find_gcd(y, x % y)
def find_lcm(x, y):
# Function to return lcm of a and b using gcd
lcm = (x*y)//find_gcd(x,y)
return lcm
# Taking input from user
n1 = int(input("Enter first number: "))
n2 = int(input("Enter second number: "))
lcm = find_lcm(n1, n2)
print(f"The LCM of {num1} and {num2} is {lcm}")
Örnek 3: MCD ile EKOK Hesaplama
# Python program to find LCM of two numbers using MCD method
def compute_gcd(x, y):
while(y):
x, y = y, x % y
return x
# Function to find LCM of two numbers
def compute_lcm(x, y):
return (x * y) // compute_gcd(x, y)
n1 = int(input("Enter first number: "))
n2 = int(input("Enter second number: "))
lcm = compute_lcm(n1, n2)
print(f"The LCM of {num1} and {num2} is {lcm}")
Ekok Hesaplarken Dikkat Edilmesi Gerekenler
- Kullanıcının girdiği değerlerin tam sayı olması gerekir.
- Sayılar pozitif olmalıdır.
- Küçük sayı büyük sayıdan önce yazılmalıdır.
- Kullanıcı hatalarından dolayı oluşabilecek istisnai durumlar için exception handling yapılmalıdır.
- Bazı algoritmalar sonsuz döngüye girebilir. Bunlara dikkat edilmelidir.
- Kod okunabilirliği açısından değişken isimlerine dikkat edilmelidir.
- Kod verimli olmalıdır.
- Kodun mantığını anlamadan yazılmaması gerekir.
- Sonsuz döngüye girmemesi için gereken kontroller yapılmalıdır.
- Algoritmanın karmaşıklığı ve çalışma süresi dikkate alınmalıdır.
- Kodun gereksiz karmaşık olmamasına dikkat edilmelidir.
- Kodun modüler yapıda olması gerekir. Fonksiyonel bir yaklaşım sergilenmelidir.
- Kullanılan kütüphanelerin güncel olması gerekir.
- Kütüphanelerin versiyon uyumluluğu kontrol edilmelidir.
- Kullanılan değişken isimleri, işlem yaptıkları değere uygun olmalıdır.
- Aynı değişken ismi tekrar kullanılmamalıdır.
- Kullanılan değişken isimleri anlaşılır ve açıklayıcı olmalıdır.
- Kodun karmaşıklığına göre yeterince yorum satırı eklenmelidir. Ancak gereksiz yorum satırlarından kaçınılmalıdır.
- Kodun gereksiz uzun olmamasına dikkat edilmelidir.
- Kod çalıştırılmadan önce test edilmelidir. Test sonuçları beklentilere uygunsa kod kullanılmaya başlanmalıdır.