27 Şubat 2019 Çarşamba

Algoritmalar 1 - Ortak Bölenlerin En Büyüğünü Bulma

Algoritmalar programlama ile uğraşanların bilgi sahibi olması gereken bir konu. Karşılaşılan bir problemin en uygun, en kısa zamanda çözülebilmesi için algoritma bilgisi elzemdir. Bu algoritmalar konusundaki ilk yazıda Öklit tarafından bulunan ve 2 sayının ortak bölenlerinin en büyüğünü kısa zamanda kolayca bulmaya yarayan algoritmadan bahsedeceğim.
Öklit der ki 2 sayının ortak katını bulamak için şu yolu izle (obeb - ortak bölenlerin en büyüğü demek):
obeb(x, y) = obeb(y, x mod y)

Yani sayılardan ilkini aynı al, diğerinin ilkine göre modülünü bul ve sayıları yer değiştirip aynı işlemi tekrarla. İkinci sayı sıfır olana kadar devam et. İkinci sayı sıfır olduğunda ilk sayı ortak bölenlerin en büyüğünü verecektir. Şimdi bunun için bir de örnek C kodu verelim:
#include <stdio.h>

int obeb(int x, int y)
{
    if (y == 0)
    {
        return x;
    }
    else
    {
        obeb(y, x % y);
    }
    return 0;
}

int main()
{
    int y = 144;
    int x = 68;

    printf("%d ve %d nın ortak bölenlerinin en büyüğü %d dir\n", x, y, obeb(x, y));

    return 0;
}