- Mesajlar
- 328
Bu islemleri herhangi bir dilde nasil kodlayabiliriz
int x = 12; // birinci sayı
int y = 18; // ikinci sayı
// dinamik dizi oluşturalım. Bölen sayısı kadar uzun olacak.
List<int> xBolenler = new List<int>();
List<int> yBolenler = new List<int>();
// birinci sayının (x) bölenlerini bulup diziye ekleyelim. Yarısına kadar baksak yeter
for (int i = 2; i <= x / 2; i++)
{
if (x % i == 0)
{
xBolenler.Add(i);
}
}
xBolenler.Add(x); // x sayının kendisi de bölendir onu da ekleyelim
// ikinci sayının (y) bölenlerini bulup diziye ekleyelim. Yarısına kadar baksak yeter
for (int i = 2; i <= y / 2; i++)
{
if (y % i == 0)
{
yBolenler.Add(i);
}
}
yBolenler.Add(y); // y sayının kendisi de bölendir onu da ekleyelim
Console.WriteLine("x = {0} sayısının bölenleri", x);
Console.WriteLine("------------------------------");
foreach (var item in xBolenler)
{
Console.WriteLine(item);
}
Console.WriteLine();
Console.WriteLine("y = {0} sayısının bölenleri", y);
Console.WriteLine("------------------------------");
foreach (var item in yBolenler)
{
Console.WriteLine(item);
}
Console.WriteLine();
//------------OBEB bulalım----------------
// her iki sayının bölenleri tek tek birbirleriyle karşılaştırılır.
int obeb = 1; // başlangıç olarak her sayının ortak böleni olan 1 atayalım
foreach (var xBolen in xBolenler)
{
foreach (var yBolen in yBolenler)
{
if (xBolen == yBolen) // bölenler eşitse
{
if (xBolen > obeb) // bölenin son obeb'den büyük olması durumunda
{
obeb = xBolen; // yeni obeb o bölen olur
}
}
}
}
Console.WriteLine("OBEB = {0}", obeb);
int okek = x * y / obeb; // okek iki sayının çarpımı obeb'e bölününce bulunuyor
Console.WriteLine("OKEK = {0}", okek);
Console.ReadKey();
int x = 12; // birinci sayı
int y = 18; // ikinci sayı
int kucuk = Math.Min(x, y); // küçük olan sayıyı bulur
int obeb = 1; // her sayının ortak böleni 1 atayalım
// küçük sayıya kadar döner
for (int i = 2; i <= kucuk; i++)
{
if (x % i == 0 && y % i == 0)
{
obeb = i;
}
}
Console.WriteLine("OBEB = {0}", obeb);
int okek = x * y / obeb; // okek iki sayının çarpımı obeb'e bölününce bulunuyor
Console.WriteLine("OKEK = {0}", okek);
Console.ReadKey();
print("""
İKİ SAYININ EBOB VE EKOK'unu BULMA
-----------------------------------
Yapmak istediğiniz işlemi seçininz:
1- EBOB Bul
2- EKOK Bul
Çıkmak için 'q' yazınız.""")
def ebobbul(sayı1,sayı2):
if sayı1 < sayı2:
say = sayı1
else:
say = sayı2
for i in range(1,say+1):
if sayı1 % i == 0 and sayı2 % i == 0:
ebob = i
return ebob
def ekokbul(sayı1,sayı2):
ekok = sayı2 * sayı1 // ebobbul(sayı1,sayı2)
return ekok
while True:
işlem = input("İşlem türünü seçiniz: ")
if işlem == "q":
print("Matematik atölyesine yine bekleriz...")
break
elif işlem == "1":
sayı1 = int(input("1. Sayıyı giriniz: "))
sayı2 = int(input("2. Sayıyı giriniz: "))
print("{} ile {} sayısının EBOB'u {}".format(sayı1,sayı2,ebobbul(sayı1,sayı2)))
elif işlem == "2":
sayı1 = int(input("1. Sayıyı giriniz: "))
sayı2 = int(input("2. Sayıyı giriniz: "))
print("{} ile {} sayısının EKOK'u {}".format(sayı1,sayı2,ekokbul(sayı1,sayı2)))
-ekok hatalı zira sayılar 6,9 olsun sen direkt cevap 54 diyorsun ama cevap 18, ebob da hatalı range başlangıç değeri 1 olursa sonuç sürekli 1 çıkar.Python ile
Kod:print(""" İKİ SAYININ EBOB VE EKOK'unu BULMA ----------------------------------- Yapmak istediğiniz işlemi seçininz: 1- EBOB Bul 2- EKOK Bul Çıkmak için 'q' yazınız.""") def ebobbul(sayı1,sayı2): if sayı1 < sayı2: say = sayı1 else: say = sayı2 for i in range(1,say+1): if sayı1 % i == 0 and sayı2 % i == 0: ebob = i return ebob def ekokbul(sayı1,sayı2): ekok = sayı2 * sayı1 // ebobbul(sayı1,sayı2) return ekok while True: işlem = input("İşlem türünü seçiniz: ") if işlem == "q": print("Matematik atölyesine yine bekleriz...") break elif işlem == "1": sayı1 = int(input("1. Sayıyı giriniz: ")) sayı2 = int(input("2. Sayıyı giriniz: ")) print("{} ile {} sayısının EBOB'u {}".format(sayı1,sayı2,ebobbul(sayı1,sayı2))) elif işlem == "2": sayı1 = int(input("1. Sayıyı giriniz: ")) sayı2 = int(input("2. Sayıyı giriniz: ")) print("{} ile {} sayısının EKOK'u {}".format(sayı1,sayı2,ekokbul(sayı1,sayı2)))
Hata yok hocam. Dikkatle bakarsanız.-ekok hatalı zira sayılar 6,9 olsun sen direkt cevap 54 diyorsun ama cevap 18, ebob da hatalı range başlangıç değeri 1 olursa sonuç sürekli 1 çıkar.
Ebobda da herhangi bir hata yok. Hata verecek değeri yazar mısınız? Ben denemesini yaptım. Herhangi bir sorun yok.-ekok hatalı zira sayılar 6,9 olsun sen direkt cevap 54 diyorsun ama cevap 18, ebob da hatalı range başlangıç değeri 1 olursa sonuç sürekli 1 çıkar.
haklısınız hocam, // açıklama satırı gibi düşündüm.Ebobda da herhangi bir hata yok. Hata verecek değeri yazar mısınız? Ben denemesini yaptım. Herhangi bir sorun yok.
fn obeb(a: i64, b: i64)->i64{
let kucuk = if a>= b{ b }else{a};
let buyuk = if a>= b{ a }else{b};
let mut obeb = 1;
if buyuk%kucuk ==0{
return kucuk;
}
else{
for i in (1..(kucuk/2+1) as i64).rev(){
if a % i == 0 && b % i ==0{
obeb = i;
break;
}
}
}
obeb
}
fn main(){
let a = 54875;
let b = 5632456;
println!("obeb={}", obeb(a,b));
println!("okek={}", a*b/obeb(a,b));
}