y priskiriame ankstesnę x reikšmę (sukeičiame x ir y vietomis)
atėmę y iš x gauname naująją x reikšmę (visada atimame mažesnį iš didesnio, todėl juos ir reikia prieš tai sukeisti)
kartojame pirmąjį žingsnį (1.)
Pavyzdys (raštu)
x = 160, y = 75, koks DBD?
x > y, x = 160 - 75 = 85, y = 75
x > y, x = 85 - 75 = 10, y = 75
x < y, x = 10, y = 75 - 10 = 65
x < y, x = 10, y = 65 - 10 = 55
x < y, x = 10, y = 55 - 10 = 45
x < y, x = 10, y = 45 - 10 = 35
x < y, x = 10, y = 35 - 10 = 25
x < y, x = 10, y = 25 - 10 = 15
x < y, x = 10, y = 15 - 10 = 5
x > y, x = 10 - 5 = 5, y = 5
x = y, t.y. x nėra mažesnis už y, x = 5 - 5 = 0, y = 5
x = 0
Ats.: 5
Pavyzdys (Pascal)
program Euklidas;var x, y :integer;function gcd (u, v :integer):integer;var t :integer;beginrepeatif(u < v)thenbegin
t := u;
u := v;
v := t;end;
u := u - v;until u =0;
gcd := v;end;beginwhilenoteofdobeginreadln(x, y);if((x > 0)and(y > 0))thenwriteln(x,' ', y,' ', gcd (x, y));end;end.