var
a,b,c:integer;
begin
readln(a,b);
c:=a mod b;
while c<>0 do
begin
a:=b;b:=c;c:=a mod b;
end;
write(b);
readln;
end.
请大家帮着看一下这个关于“辗转相除法”的pascal程序有什么问题 我是新手
答案:5 悬赏:50 手机版
解决时间 2021-03-07 15:43
- 提问者网友:像風在裏
- 2021-03-07 07:45
最佳答案
- 五星知识达人网友:街头电车
- 2021-03-07 08:31
你这个是求最大公约数问题,没错,就是少了程序头和程序名
在var前加一行program baidu_01;就可以了。baidu_01是程序名
在var前加一行program baidu_01;就可以了。baidu_01是程序名
全部回答
- 1楼网友:怀裏藏嬌
- 2021-03-07 11:55
一点都没问题
- 2楼网友:第幾種人
- 2021-03-07 11:22
程序
Program~card;
Type~ar=array[1..53]~of~integer;
~~~Var~a:ar;
~~~~~~~n:integer;
~~~Procedure~fuzhi;
~~~~~Var~i:integer;
~~~Begin
~~~~~For~i:=1~to~52~do~a[i]:=1;
~~~End;
~~~Procedure~fanpai(k:integer);
~~~~~Var~j:integer;
~~~Begin
~~~~~If~k<=52~then~begin
~~~~~~~for~j:=1~to~52~do~begin
~~~~~~~~~~~~~~~~If~((j~mod~k)=0)~then~a[j]:=(-1)*a[j];~end;
~~~~~~~~fanpai(k+1);
~~~~~~~~End;
~~~End;
~~~Procedure~print;
~~~Var~i:integer;
~~~Begin
~~~For~i:=1~to~52~do
~~~~~~~If~a[i]=1~then~Writeln('Number:',i:3,'~~~~~','Face:~','~Up')
~~~~~~~else~Writeln('Number:',i:3,'~~~~~','Face:~','~Down');
~~~End;
~~~Procedure~count;
~~~Var~i,u,no:integer;
~~~Begin
~~~~~~u:=0;
~~~~~~no:=0;
~~~~~~For~i:=1~to~52~do~If~a[i]=1~then~u:=u+1~else~no:=no+1;
~~~Writeln('The~number~of~cards~face~up~is~',u);
~~~Writeln('The~number~of~cards~face~down~is~',no);
~~~End;
Begin
~~~Writeln('Please~input~the~total~number~of~the~cards.');
~~~fuzhi;
~~~fanpai(2);
~~~print;
~~~count;
End.
从结果上看没有错误,但是:
根本用不着这么麻烦,
因为:所有牌被翻的次数等于其数字的约数的个数-1(减去的是1这个约数)
所以所有完全平方数对应的朝上,其余朝下.
所以round(sqrt(52))即可得到朝上的
- 3楼网友:傲气稳了全场
- 2021-03-07 10:30
我用pascal试过了,没有问题呀!
- 4楼网友:往事隔山水
- 2021-03-07 09:16
根本没错,是不是你输入的范围太大了,还是输入了b = 0?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯