C ile İki Sayının OBEB’ini Bulma

Döngüleri ve karar verme ifadelerini kullanarak iki tamsayının (hem pozitif hem de negatif tamsayılar için) OBEB’ini hesaplama örnekleri.

İngilizce GFC (greatest common divisor), Türkçesi EBOB (en büyük ortak böleni ) veya OBEB (ortak bölenlerin en büyüğü).

C programlamada en büyük ortak böleni bulmanın birçok yolu vardır.

Örnek 1 : if ve for döngüsü kullanarak  EBOB bulmak

#include <stdio.h>
int main()
{
    int n1, n2, i, gcd;

    printf("İki tam sayı girin: ");
    scanf("%d %d", &n1, &n2);

    for(i=1; i <= n1 && i <= n2; ++i)
    {
        if(n1%i==0 && n2%i==0)
            gcd = i;
    }

    printf("%d ve %d EBOB'u : %d", n1, n2, gcd);

    return 0;
}

Bu programda, kullanıcı tarafından girilen iki tamsayı n1 ve n2 değişkeninde saklanır. Sonra, döngü i, n1 ve n2’den küçük olana kadar tekrarlanır.

Her yinelemede, hem n1 hem de n2, i ile tam olarak bölünebiliyorsa, i değeri, gcd’ye atanır.

For döngüsü tamamlandığında, iki sayının en büyük ortak böleni gcd değişkeninde saklanır.

Örnek 2 : if ve while döngüsü kullanarak EBOB bulmak

#include <stdio.h>
int main()
{
    int n1, n2;
    
    printf("İki tam sayı girin: ");
    scanf("%d %d",&n1,&n2);

    while(n1!=n2)
    {
        if(n1 > n2)
            n1 -= n2;
        else
            n2 -= n1;
    }
    printf("EBOB = %d",n1);

    return 0;
}

Bu, EBOB bulmak için daha iyi bir yoldur. Bu yöntemde, küçük tam sayı, büyük tam sayıdan çıkarılır ve sonuç, büyük tam sayıyı tutan değişkene atanır. Bu işlem n1 ve n2 eşit oluncaya kadar devam eder.

Yukarıdaki iki program, yalnızca kullanıcı pozitif tamsayılar girdiğinde amaçlandığı şekilde çalışır. İşte hem pozitif hem de negatif tamsayılar için
EBOB bulmak için ikinci örnekte yapılan küçük bir değişiklik.

Örnek 3 : hem pozitif hem de negatif sayılar için EBOB örneği

#include <stdio.h>
int main()
{
    int n1, n2;

    printf("İki tam sayı girin: ");
    scanf("%d %d",&n1,&n2);

    // kullanıcı negatif sayı girerse, sayının işareti pozitif olarak değişir.
    n1 = ( n1 > 0) ? n1 : -n1;
    n2 = ( n2 > 0) ? n2 : -n2;

    while(n1!=n2)
    {
        if(n1 > n2)
            n1 -= n2;
        else
            n2 -= n1;
    }
    printf("EBOB = %d",n1);

    return 0;
}

Ayrıca iki Sayının EBOB’u, EKOK ile de bulunabilir, formül şudur:

EKOK = (sayi1*sayi2)/EBOB

C programlamada iki sayının EKOK’unu nasıl bulacağınız hakkında ki örneğimize de bakabilirsiniz.