Наибольший общий делитель двух натуральных чисел – наибольшее число, на которое делятся данные числа. Наименьшее общее кратное двух натуральных чисел – наименьшее число, которое делится на данные числа. На вход программы поступают 2 целых положительных числа. Необходимо найти их наибольший общий делитель и наименьшее общее кратное.
Описание входных и выходных данных
В двух строках по одному записаны натуральные числа, не превосходящие 100000000.
В качестве результата программа должна напечатать через пробел наибольший общий делитель и наименьшее общее кратное данных чисел.
Пример входных данных:
12
16
Пример выходных данных для приведённого выше примера входных данных:
4 48
Требуется написать эффективную по времени и памяти программу. Перед текстом программы обязательно опишите алгоритм решения. Укажите использованный язык программирования и его версию.
program krolik;
var a,b,i,del,kr,p:longint;
begin
writeln('введите значение первого числа');
readln(a);
writeln('введите значение второго числа');
readln(b);
if (a<=0) or (b<=0) then
writeln('ошибка');
del:=1;
for i:=1 to a do
if (a mod i=0) and (b mod i=0) then
del:=i;
p:=a*b;
kr:=p;
for i:=p downto 1 do
if (i mod a=0) and (i mod b=0) then
kr:=i;
writeln(del,' ',kr);
end.