辗转相除法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

练习1:利用辗转相除法求两数4081与
20723的最大公约数. (53)
20723=4081×5+318; 4081=318×12+265; 318=265×1+53; 265=5Βιβλιοθήκη Baidu×5+0.
更相减损术
“更相减损术”(也是求两个正整数的最大公约数的算法) 步骤:
第一步:任意给定两个正整数;判断他们是否都是偶数。 若是,则用2约简;若不是则执行第二步。
END IF
a=a-b
LOOP UNTIL a=b
PRINT a*2^i
END
例2 分别用辗转相除法和更相减损 术求168与93的最大公约数.
辗转相除法:168=93×1+75, 93=75×1+18, 75=18×4+3, 18=3×6.
更相减损术:168-93=75, 93-75=18, 75-18=57, 57-18=39, 39-18=21, 21-18=3, 18-3=15, 15-3=12, 12-3=9, 9-3=6, 6-3=3.
知识探究(一):辗转相除法
思考1:18与30的最大公约数是多少?你 是怎样得到的?
先用两个数公有的质因数连续去除, 一直除到所得的商是互质数为止,然 后把所有的除数连乘起来即为最大公 约数.
思考2:对于8251与6105这两个数,由于 其公有的质因数较大,利用上述方法求 最大公约数就比较困难.注意到 8251=6105×1+2146,那么8251与6105这 两个数的公约数和6105与2146的公约数 有什么关系?
例3:用辗转相除法和更相减损术求210与714 的最大公约数.
于m;否则,返回第二步.
思考6:该算法的程序框图如何表示?
开始
输入m,n
求m除以n的余数r
m=n n=r r=0? 否
是 输出m
结束
思考7:该程序框图对应的程序如何表述?
开始
输入m,n
求m除以n的余数r
m=n n=r r=0? 否
是 输出m
INPUT m,n DO
r=m MODn m=n n=r LOOP UNTIL r=0 PRINT m
END
结束
思考8:如果用当型循环结构构造算法, 则用辗转相除法求两个正整数m,n的最 大公约数的程序框图和程序分别如何表 示?
开始
输入m,n
n=r m=n
r>0? 否
输出m
求m除以n的余数r 是
结束
INPUT m,n
WHILE r>0 r=m MOD n m=n n=r
WEND PRINT m
END
思考3:又6105=2146×2+1813,同理, 6105与2146的公约数和2146与1813的公 约数相等.重复上述操作,你能得到8251 与6105这两个数的最大公约数吗?
8251=6105×1+2146, 6105=2146×2+1813, 2146=1813×1+333, 1813=333×5+148, 333=148×2+37, 148=37×4+0.
98-63=35 63-35=28 35-28=7 28-7=21 21-7=14
14-7=7 所以,98和63的最大公约数等于7。
思考:更相减损直到何时结束?运用的是哪种算法结构?
更相减损是一个反复执行直到减数等于差时停止的步骤, 这实际也是一个循环结构
开始 输入:a,b
i=0
a MOD 2=0且b MOD 2=0?
思考5:上述求两个正整数的最大公约数 的方法称为辗转相除法或欧几里得算法. 一般地,用辗转相除法求两个正整数m, n的最大公约数,可以用什么逻辑结构来 构造算法?其算法步骤如何设计?
第一步,给定两个正整数m,n(m>n).
第二步,计算m除以n所得的余数r. 第三步,m=n,n=r. 第四步,若r=0,则m,n的最大公约数等
第二步:以较大的数减较小的数,接着把所得的差与较 小的数比较,并以大数减小数。继续这个操作,直到所 得的减数和差相等为止,则这个等数或这个数与约简的 数的乘积就是所求的最大公约数。
例、用更相减损术求98与63的最大公约数 (自己按照步骤求解) 解:由于63不是偶数,把98和63以大数减小数,并辗转相减。
辗转相除法是一个反复执行直到余数等于0停止的步骤,这实际上是
一个循环结构。
m=n×q+r
用程序框图表示出右边的过程
8251=6105×1+2146
r=m MOD n m=n n=r
r=0?


6105=2146×2+1813 2146=1813×1+333 1813=333×5+148
333=148×2+37 148=37×4+0
N
b>a?
Y
N
t=a,a=b,b=t
a=a-b
N a=b? Y
输出:a×2i
结束
程序:
INPUT “a,b”;a,b
i=0
WHILE a MOD 2=0 AND b MOD 2=0
a=a/2
i=i+1
b=b/2 i=i+1
Y
WEND
a=a/2,b=b/2 DO
IF b>a THEN
t=a
a=b
b=t
相关文档
最新文档