• Web sitemizin içeriğine ve tüm hizmetlerimize erişim sağlamak için Web sitemize kayıt olmalı ya da giriş yapmalısınız. Web sitemize üye olmak tamamen ücretsizdir.
  • Sohbetokey.com ile canlı okey oynamaya ne dersin? Hem sohbet et, hem mobil okey oyna!
  • Soru mu? Sorun mu? ''Bir Sorum Var?'' sistemimiz aktiftir. Paylaşın beraber çözüm üretelim.

Python En Küçük Ortak Kat Bulucu (Ekok) Programı Çalışmıyor

Flakes

MFC Üyesi
Üyelik Tarihi
24 Ocak 2022
Konular
6
Mesajlar
8
MFC Puanı
30
sayi1 = int(input("1. Sayiyi giriniz: "))
sayi2 = int(input("2. Sayiyi giriniz: "))
liste = []


def ekokbul(sayi1,sayi2):
carpim = sayi1 * sayi2
for i in range(max(sayi1,sayi2)-1,carpim):
if i % sayi1 and i % sayi2 == 0:
liste.append(i)
return liste

print(ekokbul(sayi1,sayi2))

1. Sayiyi giriniz: 20
2. Sayiyi giriniz: 25
[25, 50, 75, 125, 150, 175, 225, 250, 275, 325, 350, 375, 425, 450, 475]

Böyle cikiyor neyi yanlis yaptim?
 
Moderatör tarafında düzenlendi:

TRWE_2012

Süper Moderatör
Üyelik Tarihi
2 Haz 2020
Konular
3,087
Mesajlar
5,879
MFC Puanı
20,700
Hata 7.satır 'daki fonksiyon düzeninde;

Bakasın aşağıdaki ekran görüntüsüne
1.png

Doğrusu ;

EKOK

Python:
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

Açıklama :

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)

EBOB


Python:
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

Açıklama :

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)

Python Betik Dosyası :


Python:
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]))

Buda başka bir biçim

Python:
import math

sayi1=int(input("1. sayıyı giriniz: "))
sayi2=int(input("2. sayıyı giriniz: "))

ebob=math.gcd(sayi1,sayi2)
ekok= (sayi1*sayi2)/ebob

print ("EBOB = ",ebob)
print ("EKOK = ",ekok)

Açıklama :

Python Ebob Ekok Bulma örneğinde kullanıcıdan 2 sayı istenir. Bu sayıların ebob unu bulmada math modülünün gcd fonksiyonundan yararlanmak zorundasın. ebob=math.gcd(sayi1,sayi2) komutu ile iki sayının EBOB u rahatlıkla bulunabilir.

EKOK bulurken ise fonksiyon olmadığı için matematik kuralları işimizi görecektir. 2 sayının çarpımının EBOB’ a bölümü EKOK’ u verir. Bundan dolayı EKOK hesabını ise ekok= (sayi1*sayi2)/ebob komut satırı ile hesaplayabilirsin.
 

TRWE_2012

Süper Moderatör
Üyelik Tarihi
2 Haz 2020
Konular
3,087
Mesajlar
5,879
MFC Puanı
20,700
Python EKOK-EBOB Hesabı :


 
Üst