求两个数最大公约数pascal语言

来源:百度知道 编辑:UC知道 时间:2024/06/15 08:36:39
最好能带点讲解

hvar a,b,c:longint;
begin
write('a,b=');
readln(a,b);
while b>0 do begin
c:=a mod b;
a:=b;
b:=c;
end
write(a);
end.
这是用while语句的。

var a,b:longint;
function gcd(m,n:longint):longint;
begin
if m mod n=0 then gcd:=n else gcd:=gcd(n,m mod n);
end;
begin
read(a,b);writeln(gcd(a,b));
end.

var a,b,c,d:integer; 定义四个变量;
begin
read(a,b);
if a<b then 如果a<b 那么交换位置
begin
c:=a;
a:=b;
b:=c;
end;
if (a mod b<>0) or (b mod a<>0) then 如果不能整除那么进行迂回算法
begin
d:=a mod b;
a:=b;
b:=c;
end
else
if a mod b=0 then 考虑到每个数能整除用两个判断
writeln(b)
else
if b mod a=0 then
writeln(a);
writeln(b);
end.

var x,y:longint;
function gcd(a,b:longint):longint;
begin
if a mod b=0 then gcd:=b//两数若能整除最大公约数为除数
else gcd:=gcd(b,a mod b);//否则