求N个数的最大公约数,高分帮我看一下哪不对。

来源:百度知道 编辑:UC知道 时间:2024/04/29 22:23:29
我学Pascal刚半年
高一
可能错误比较蠢
望见谅。
——————————————————————————————
program chen;
var
a:array[1..100] of integer;
j,k,n,i,t:integer;
function qiu(x,y:integer) :longint;
var
a:integer;
begin
while a<>0 do
begin
a:=x mod y;
x:=a;
y:=x;
end;

qiu:=x;
end;

begin
for i:=1 to n do
read(a[i]);

j:=1;
k:=2;

while (n>0) and (j<n) and (k<=n) do
begin
a[t]:=qiu(a[j],a[k]);
j:=t;
k:=k+1;
end;

write(a[j]);
writeln;
end.

——————————————————————
你认为我这个程序会打印出什么结果呢?

function qiu(x,y:integer) :longint;
var
a:integer;
begin
while a<>0 do
begin
a:=x mod y;
x:=a;
y:=x;
end;
这段可以编程为:
function qiu(m,n:integer):longint;
begin
if n=0 then qiu:=m
else qiu:=qiu(n,(m mod n));
end;
剩下的看 cwm20071128 的吧,他的没错
至于你的####
(我也高一,刚学半年^-^)

sorry.i don't know

用辗转相除法
var a,b:longint;

function gcd(a,b:longint):longint;
begin
if a<b then exit(gcd(b,a));
if b=0 then exit(a);
exit(gcd(b,a mod b));
end;

begin
readln(a,b);
writeln(gcd(a,b));
end.

你用这个程序对着你的运行几个数据看看,然后自己查查

我按你的思路改了一下:
var a,b:longint;
t,n,i:integer;
d:array[1..1000]of integer;

function c(a,b:longint):longint;
var r:integer;
begin
repeat
r:=a mod b;
a:=b;
b:=r
until r=0;
c:=a;
end;

begin
readln