Algoritm implementatsiyasi videosiga o'tishdan oldin. Uning dasturini o'zingiz mustaqil yozib ko'rishni maslahat beramiz. Yevklid algoritmi qay tarzda ishlaydi. (Geometrik tushuntirish) Bilamizki, Yevklid geometriya fani olimi bo'lgan shuning uchun u yaratgan algoritmni geometriya orqali tushuntirib berishga harakat qilamiz.
Misol: 38 va 16 sonlarining EKUBini Yevklid algoritmi yordamida toping.
Keling tomonlari 38 va 16 bo'lgan to'g'ri to'rtburchak chizib olamiz.
Endi bu to'rtburchakdan tomoni 16 ga teng bo'lgan kvadratlarni ajratib olamiz.
Bu narsa bizga 38 ni 16 ga bo'lgandagi butun va qoldiq qismni vizual ko'rsatib beradi. Ya'ni:
O'ng tarafdagi bo'yalmagan qism bizdagi qoldiqni (6) ifodalaydi. Endi yuqoridagi ishni o'sha 16 ga 6 tomonli to'g'ri to'rtburchak uchun davom ettiramiz.
Huddi yuqoridagidek:
Shu tarzda qoldiq nolga tenglashguncha davom etamiz.
Shu joyda algoritm o'z ishini yakunlaydi va eng kichik kvadrat tomoni (2) bizga 38 va 16 uchun EKUBni beradi.
Bu holatda tomoni to'g'ri to'rtburchak tomonlari EKUBiga teng bo'lgan kvadrat shu to'g'ri to'rtburchakning barcha sohasini to'ldirib chiqa oladigan eng katta tomonli kvadrat.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EKUB_EvklidAlgaritimi
{
class Program
{
static void Main(string[] args)
{
int a = int.Parse(Console.ReadLine());
int b = int.Parse(Console.ReadLine());
while (a > 0 && b > 0)
{
if (a > b)
{
a %= b;
}
else {
b %= a;
}
}
Console.WriteLine(a+b);
Console.ReadKey();
}
}
}
Shu yerda qoshimcha qilsak boladi yani EKUK dasturini ham tuzsak boladi
Yani a*b=EKUB(a,b)*EKUK(a,b)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EKUK_EvklidAlgaritimi
{
class Program
{
static void Main(string[] args)
{
int a = int.Parse(Console.ReadLine());
int b = int.Parse(Console.ReadLine());
int s = a * b;
while (a > 0 && b > 0)
{
if (a > b)
{
a %= b;
}
else {
b %= a;
}
}
Console.WriteLine("EKUK "+(s/(a+b)));
Console.ReadKey();
}
}
}