pascal语言:用”递归算法”求2个自然数的最大公约数与最小公倍数

必须用递归算法!!!...
2026年09月25日 06:27
有3个网友回答
网友(1):

{
不是整数的2b数据别给啊

}

var
a,b:longint;
function gcd(a,b:longint):longint; //(递归)最大公约数
begin
if b=0 then gcd:=a
else gcd:=gcd(b,a mod b);
end;
begin
readln(a,b);
writeln('GCD=',gcd(a,b),' ACM=',a*b div gcd(a,b)); //a*b div gcd(a,b)为最小公倍数
end.

网友(2):

program zjh;
var
n,m:longint;
procedure try(l,r:longint);
var
i:longint;
begin
if l mod r=0 then begin writeln(r,' ',n*m div r); halt; end;
i:=l mod r;
try(r,i);
end;
begin
readln(n,m);
try(n,m);
end.

网友(3):

var
x,y:integer;
i:integer;
procedure gys;
begin
i:=i-1;
if (x mod i=0) and (y mod i=0) then writeln(i)
else gys;
end;
procedure gbs;
begin
i:=i+1;
if (i mod x=0) and (i mod y=0) then writeln(i)
else gbs;
end;
begin
write('请输入两个整数:');
readln(x,y);
i:=x;
i:=i-1;
gys;
i:=i+2;
gbs;
readln;
end.