Наименьшим общим кратным двух целых чисел a и b называется наименьшее положительное число, которое делится на a и b.
Известно, что
НОК(a,b)=ab/НОД(a,b).
Сначала вычисляется НОД(a,b), затем НОК по предыдущей формуле. При a=0 или b=0 НОК полагается равным 0. Для нахождения НОД лучше всего воспользоваться алгоритмом Евклида, который (алгоритм) был уже описан на нашем сайте.
Моя реализация данного алгоритма на Паскале
<table class=code cellpadding=5 align=center width=98% border=1 bordercolor=#3B3B3B><tr><td>
function nod(a,b: integer):integer;
begin
if a<b then begin
a := a xor b;
b := a xor b;
a := a xor b;
end;
while not ((a=0) or (b=0)) do
if a >= b then a := a - b else b := b - a;
if a = 0 then result := b else result := a;
end;
function nok(a,b: integer):integer;
begin
if (a=0) or (b=0) then result := 0 else
result := a*b div nod(a,b);
end;
var a,b: integer;
begin
readln(a,b);
writeln(nok(a,b));
readln;
end.</td></tr></table>
К началу статьи