pascal 求 n 个数的最大公约数 Program gongyuemax(input,output); Var x,N,s,i,y:integer; procedure gon

pascal高手们看看哪里错了如打入24854结果咋是48?Programgongyuemax(input,output);Varx,N,s,i,y:integer;pr... pascal高手们看看 哪里错了 如 打入 2 48 54 结果咋是48?
Program gongyuemax(input,output);
Var
x,N,s,i,y:integer;
procedure gongyue(m:integer; var n:integer);
var
i,j:integer;
begin
for i:=n downto 1 do
begin
if n mod i=0 then
begin
if m mod i=0 then
n:=i;
break;
end;
end;
end;
Begin
assign(input,'pact.in');
reset(input);
assign(output,'pact.out');
rewrite(output);
readln(N);
read(x);
y:=x;
while not eof do
begin
read(x);
gongyue(x,y);
end;
write(y);

close(input); close(output);
End.
展开
 我来答
taobingxue
2011-04-15 · TA获得超过2.3万个赞
知道大有可为答主
回答量:1148
采纳率:80%
帮助的人:886万
展开全部
procedure gongyue(m:integer; var n:integer);
var
i,j:integer;
begin
for i:=n downto 1 do
begin
if n mod i=0 then
begin
--> if (m mod i=0) and (n mod i=0) then 这里有问题,小于n的数又不都是n的约数,应该像这样吧n也判断一下
n:=i;
break;
end;
end;
end;
=========你的第二关程序======================
for i:=n downto 1 do
begin
if n mod i=0 then
begin
if m mod i=0 then
--> begin {if后面你没有begin/end..第一次n mod i=0就会break..以后码代码仔细点....................................}
n:=i;
break;
end;
end;
end;

另外,一般求公约数都用辗转相除法的。。你这样写麻烦了。。而且跑的满,如果n=100000,每个元素在1~100000范围内你就不知道什么时候才能出解了,以下是辗转相除的程序

var
x,n,s,i,y,k:integer;
function gcd(a,b:longint):longint;
begin
if a mod b=0 then exit(b)
else exit(gcd(b,a mod b));
end;
begin
readln(N);
read(x);
y:=x;
for k:=1 to n-1 do
begin
read(x);
y:=gcd(x,y);
end;
write(y);
end.
龍輕§舞飛
2011-04-15
知道答主
回答量:11
采纳率:0%
帮助的人:0
展开全部
。。。。对的啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
616469780
2011-04-20 · TA获得超过326个赞
知道小有建树答主
回答量:290
采纳率:0%
帮助的人:214万
展开全部
procedure要改一改。
procedure gongyue(m:integer;var n:integer);
var r:integer;
begin
while n<>0 do
begin
r:=m mod n;
m:=n;
n:=r;
end;
n:=m;//把最大公约数赋给n。
end;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友005875b0e
2011-04-24 · 超过14用户采纳过TA的回答
知道答主
回答量:74
采纳率:0%
帮助的人:43万
展开全部
错了2点:1、eof没定义成布尔型;
2、子程序和主程序都有i ,电脑可能误解了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式