Python ile EKOK ve EBOB Bulma


Bu yazımızda, Python kullanarak EKOK(En küçük ortak kat) ve EBOB(En büyük ortak bölen) bulan program oluşturacağız. Oluşturduğumuz program, veri olarak girdiğimiz dizinin bütün elemanları arasında hesaplama yapacak. Python’da bulunan modüllerdeki hazır fonksiyonlar ile kolay bir şekilde EKOK veya EBOB hesaplayabiliyoruz ancak modüllere bağlılığı azaltmak ve  programlama bilgimizi geliştirmek için kendimiz EKOK ve EBOB bulan bir program oluşturacağız. Kodlamaya geçelim:

EKOK:

def ekok_bul(self):
    çarpım = 1
    for i in self: çarpım *= i #Dizinin çarpımı
    for i in range(1, çarpım+1):
        if sum([i % j for j in self]) == 0:
            ekok = i
            print('Ekok', self, ':', ekok)
            break
 Python Modül Fonksiyonu: numpy.lcm()

Hesaplama yapmak istediğimiz sayıların en küçük ortak katı, maksimum o sayıların çarpımına eşittir. Örnek olarak: verilen iki sayı A ve B olmak üzere; A ve B’nin en küçük ortak katı maksimum “A x B”, verilen üç sayı A, B ve C olmak üzere; A, B ve C’nin en küçük ortak katı maksimum “A x B x C” olabilir. Bu yüzden, döngümüz elimizdeki dizinin çarpımına kadar gitmek zorundadır.(4. Satır) En küçük ortak kat olan sayı, dizideki bütün sayılara kalansız bölünür.(5.Satır) Ancak en küçük ortak kat olan sayının katları da dizideki sayılara kalansız bölüneceği için o sayının katlarına geçmeden döngüyü durdurmamız gerekir.(8.Satır)

Büyütmek için görsele tıklayın.
Büyütmek için görsele tıklayın.

EBOB:

def ebob_bul(self):
    for i in reversed(range(1, max(self))):
        if sum([j % i for j in self]) == 0:
            ebob = i
            print('Ebob', self, ':', ebob)
            break
 Python Modül Fonksiyonu: numpy.gcd()

En büyük ortak bölen sayıyı aradığımız için döngü iterasyonunun büyükten küçüğe doğru olması gerekiyor.(2.Satır) Birden fazla ortak bölen olabileceği için en büyük olanı bulduğumuzda döngüyü sonlandırmamız gerekiyor.(6.Satır)

Büyütmek için görsele tıklayın.
Büyütmek için görsele tıklayın.

Tek bir “script” dosyası altında toplayalım:

#kodlamaogreniyorum.com, 2020
import numpy #Karşılaştırmak için
#Modül Kullanımı numpy.lcm(), numpy.gcd()

def ekok_bul(self):
    çarpım = 1
    for i in self: çarpım *= i #Dizinin çarpımı
    for i in range(1, çarpım+1):
        if sum([i % j for j in self]) == 0:
            ekok = i
            print('Ekok', self, ':', ekok)
            break

def ebob_bul(self):
    for i in reversed(range(1, max(self))):
        if sum([j % i for j in self]) == 0:
            ebob = i
            print('Ebob', self, ':', ebob)
            break

ekok_bul([12, 14])
print('Modül Çıktısı:', numpy.lcm(12, 14))
dizi = [150, 24, 30, 48]
ebob_bul(dizi)
print('Modül Çıktısı:', numpy.gcd(150, [24, 30, 48]))

Programın “.py” dosyasını aşağıdaki linkten indirebilirsiniz. Görüşmek üzere!

Sponsorlu LinkİNDİR (Devam Et butonuna bastıktan sonra dosya otomatik indirilecektir, sekmeyi kapatabilirsiniz.)

close

Yeni yazılardan haberdar olmak için sitemize abone olun.

İstenmeyen posta göndermiyoruz! Sadece yeni yazılarla ilgili mail alacaksanız.

2 thoughts on “Python ile EKOK ve EBOB Bulma

  • 12 Ocak 2021 tarihinde, saat 14:11
    Permalink

    Ben bu kodları kopyalayıp çalıştırmak istiyorum ama hiçbir şey olmuyor. Çalışmıyor.

    Yanıtla
    • 12 Ocak 2021 tarihinde, saat 16:47
      Permalink

      Oluşturduğunuz fonksiyonları çağırdınız mı? Fonksiyonları çağırıp kodları çalıştırmazsanız, program çalışmaz. Kodun sonuna ebob_bul([x, y]) tarzında ifade yazıp çalıştırmanız lazım. 25 Satırlık kodu kopyalayıp, çalıştırmayı deneyin. Numpy kütüphanesinin yüklü olmasına dikkat edin. Yine de çalışmazsa programın .py dosyasının linki mevcut, indirip çalıştırın.

      Yanıtla

Tunahan için bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir