#include <stdio.h>
int main()
{
int sayi1, sayi2, i;
printf (" Write two numbers : ");
scanf ("%d%d", &sayi1, &sayi2);
// iki sayının OKEK değeri en fazla iki sayının çarpımı olabilir.
// (iki sayı aralarında asalsa bu durum gerçekleşir.) Bu yüzden
// döngünün (sayi1 * sayi2)'ye kadar dönmesi yeterlidir.
for (i = 1; i <= sayi1 * sayi2; i ++)
{
if (i % sayi1 == 0 && i % sayi2 == 0)
{
// OKEK değeri her iki sayıya da tam olarak bölünür.
// Bu durumun görüldüğü andaki i değeri iki sayının
// ortak katlarının alabildiği en küçük değerdir.
printf (" OKEK : %d\n", i);
break;
}
}
// OBEB değeri, en fazla sayılardan büyük olanın değeri kadar
// olabilir. (diğer sayının değeri bir ise.) Bu nedenle
// döngünün başlangıç değeri olarak sayılardan büyük olanını
// almak yeterli olacaktır.
(sayi1 > sayi2) ? i = sayi1 : i = sayi2;
for (; i > 0; i --)
{
if (sayi1 % i == 0 && sayi2 % i == 0)
{
// OBEB değeri her iki sayıya da tam olarak bölünebilir.
// Bu durumun görüldüğü andaki i değeri iki sayıyı tam
// olarak bölebilecek en büyük tam sayıdır.
printf (" OBEB : %d\n", i);
break;
}
}
return 0;
}
/************************************************************************
OUTPUT:
------
Write two numbers: 42 28
OKEK : 84
OBEB : 14
************************************************************************/