主要有三个问题,一个是你的YUSHU函数应该用值参而不是用形参,就是说要把VAR去掉;还有就是你的循环体里A:=B是不对的,想一下,如果这样赋值,一进循环体,A,B就相等了,显然不对,应该定义一个中间变量T,先把a的值赋给T,再处理,防止A的值被覆盖;还有就是不知为什么突然冒出一个X.
修改如下
function gcd(a,b:longint):longint;
var
t:longint;
begin
repeat
t:=a;
a:=b;
b:=t mod b;
until b=0;
exit(a);
end;
还有一种递归的写法
function gcd(a,b:longint):longint;
begin
if b=0 then exit(a)
else exit(gcd(b,a mod b));
end;