Bu yazıyı birinci sınıfta iken kulüp sitesinde yazmıştım. Site şu an aktif olmadığı için burada yayınlamaya karar verdim.
Genelde herhangi bir programlama diline başlanırken en basit algoritmalar gösterilir ve ödev olarak verilir. Bu örnekte farklı olarak Ayrık Matematik(Discrete Maths) dersinde gösterilen bir algoritma uygulanmıştır.
Verilen iki sayının obebini bulurken, sayıların asal çarpanlarını bulmak yada tek tek başka sayılara bölmek yavaş olabilir. Bu nedenle özel bir algoritma kullanılır. Java kod örneği aşağıda verilmiştir.
import java.util.Scanner;
public class obeb{
static Scanner sc=new Scanner(System.in);
public static int sayial(){
/*kodları tekrar tekrar yazmak yerine fonksiyonumuzu oluşturalım*/
System.out.println("Lütfen bir sayı girin");
int a =sc.nextInt();
return a;
}
public static int obeb(int b,int k){
int d;
if(k==0){
/* küçük sayımız sıfırsa artık obebimizi bulduk demektir*/
d=b;
return d;
}
else{
int c=b%k;
/*fonksiyonumuz kendini çağıracak
* işlemden elde ettiği sayıları
* tekrar aynı işlemlerden geçirecek böylece
*/
d=obeb(k,c);
return d;
}
}
public static void main(String[] args) {
int a,b,bsayi,ksayi,obeb;
a=sayial();
b=sayial();
obeb=0;
bsayi=0;
ksayi=0;
/*sayılardan büyük olanı bulalım*/
if(0<a-b){
bsayi=a;
ksayi=b;
}
else if(0>a-b){
bsayi=b;
ksayi=a;
}
else
obeb=a;
/*obebimizi hesaplayacak fonksiyonu çağıralım*/
if(obeb!=a){
obeb=obeb(bsayi,ksayi);
}
System.out.println("girdiğinizi sayıların en büyük ortak böleni = "+obeb);
}
}


