Цитата:
Сообщение от Рома123
2) найти наиб.общий делитель и наим.общее кратное (для любого числа).
|
Код:
Var
m,n,p,GCD:LongInt; {формат Longint выбран потому, что в программе будет
использоваться произведение чисел m и n}
Function Min(p,q:LongInt):LongInt;
{вспомогательная функция поиска минимального из двух чисел}
begin
if p>q then Min:=q else Min:=p;
end;
Function Find_GCD(p,q:LongInt):LongInt;
{Ищем Наибольший Общий Делитель (Greatest Common Divisor) двух чисел.
Алгоритм таков: проверяем делимость бОльшего числа на меньшее, и в случае
отрицательного результата в цикле отнимаем от меньшего по единичке до
тех пор, пока не окажется, что оба исходных числа делятся на полученное.
Делимость проверяется по равенству нулю остатка от деления.}
var
i:LongInt;
begin
i:=Min(p,q)+1;
repeat
i:=i-1;
until ((p mod i)=0) and ((q mod i)=0);
Find_GCD:=i;
end;
Begin
Repeat
{Цикл организован для проверки выполнения условия строгой положительности
вводимых чисел}
Write('m = ');
Readln(m);
Write('n = ');
Readln(n);
if (m<=0) or (n<=0) then writeln('Both numbers must be positive!!!');
Until (m>0) and (n>0);
GCD:=Find_GCD(m,n);
Writeln('Greatest Common Divisor = ',GCD);
{Для поиска Наибольшего Общего Кратного используется теорема о том,
что произведение НОД и НОК равно произведению самих чисел.}
Writeln(' Least Common Multiple = ',(m*n div GCD));
Readln
End.