PASCAL试题〔例2〕用尼考曼彻斯法求两个自然数a和b的最大公约数.方法是:辗转相减.如要求158与36的最大公约数,可以进一步转化为158-36=122与36的最大公约数,继续减,如果不够减就交换两个数,

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/09 16:23:51

PASCAL试题〔例2〕用尼考曼彻斯法求两个自然数a和b的最大公约数.方法是:辗转相减.如要求158与36的最大公约数,可以进一步转化为158-36=122与36的最大公约数,继续减,如果不够减就交换两个数,
PASCAL试题
〔例2〕用尼考曼彻斯法求两个自然数a和b的最大公约数.
方法是:辗转相减.如要求158与36的最大公约数,可以进一步转化为158-36=122与36的最大公约数,继续减,如果不够减就交换两个数,直至差为0停止,最后一次不为0的数就是最大公约数.过程如下:
(158,36)=(122,36)=(86,36)=(50,36)=(14,36)
前面的数比后面小,交换:=(36,14)=(22,14)=(8,14)
再交换: =(14,8)=(6,8)=(8,6)=(2,6)=(6,2)=(4,2)=(2,2)=(0,2)

PASCAL试题〔例2〕用尼考曼彻斯法求两个自然数a和b的最大公约数.方法是:辗转相减.如要求158与36的最大公约数,可以进一步转化为158-36=122与36的最大公约数,继续减,如果不够减就交换两个数,
var a,b,temp:integer;
begin
readln(a,b);
if ab) then a:=a-b
else begin temp:=a-b; a:=b;b:=temp; end;
end;
if a=0 then writeln(b) else writeln(a);
end.