《辗转相除法和更相减损法讲义》由会员分享,可在线阅读,更多相关《辗转相除法和更相减损法讲义(12页珍藏版)》请在金锄头文库上搜索。
1、1、求两个正整数的最大公约数、求两个正整数的最大公约数(1)求)求25和和35的最大公约数的最大公约数(2)求)求49和和63的最大公约数的最大公约数2、求、求8251和和6105的最大公约数的最大公约数 25(1) 5535749(2) 77639所以,所以,25和和35的最大公约数为的最大公约数为5所以,所以,49和和63的最大公约数为的最大公约数为7 辗转相除法辗转相除法与与更相减损术更相减损术讲义讲义辗转相除法(欧几里得算法)辗转相除法(欧几里得算法)观察用辗转相除法求观察用辗转相除法求8251和和6105的最大公约数的过程的最大公约数的过程 第一步第一步 用两数中较大的数除以较小的数
2、,求得商和余数用两数中较大的数除以较小的数,求得商和余数8251=61051+2146结论:结论: 8251和和6105的公约数就是的公约数就是6105和和2146的公约数,求的公约数,求8251和和6105的最大公约数,只要求出的最大公约数,只要求出6105和和2146的公约数就可以了。的公约数就可以了。第二步第二步 对对6105和和2146重复第一步的做法重复第一步的做法6105=21462+1813同理同理6105和和2146的最大公约数也是的最大公约数也是2146和和1813的最大公约数。的最大公约数。 完整的过程完整的过程8251=61051+2146 6105=21462+1813
3、 2146=18131+3331813=3335+148333=1482+37148=374+0例例2 用辗转相除法求用辗转相除法求225和和135的最大公约数的最大公约数225=1351+90135=901+4590=452显然显然37是是148和和37的最大公约的最大公约数,也就是数,也就是8251和和6105的最的最大公约数大公约数 显然显然45是是90和和45的最大公约数,也就是的最大公约数,也就是225和和135的最大公约数的最大公约数 思考思考1:从上面的两个例子可以看出计:从上面的两个例子可以看出计算的规律是什么?算的规律是什么? S1:用大数除以小数:用大数除以小数S2:除数变
4、成被除数,余数变成除数:除数变成被除数,余数变成除数S3:重复:重复S1,直到余数为,直到余数为0利用辗转相除法求最大公约数的步骤如下:利用辗转相除法求最大公约数的步骤如下: 第一步:用较大的数第一步:用较大的数m m除以较小的数除以较小的数n n得到得到一个商一个商q q0 0和一个余数和一个余数r r0 0;(m=nq(m=nq0 0+r+r0 0) ) 第二步:若第二步:若r r0 00 0,则,则n n为为m m,n n的最大公约的最大公约数;若数;若r r0 000,则用除数,则用除数n n除以余数除以余数r r0 0得到一个得到一个商商q q1 1和一个余数和一个余数r r1 1;
5、(n=r(n=r0 0qq1 1+r+r1 1) ) 第三步:若第三步:若r r1 10 0,则,则r r0 0为为m m,n n的最大公约的最大公约数;若数;若r r1 100,则用除数,则用除数r r0 0除以余数除以余数r r1 1得到一个得到一个商商q q2 2和一个余数和一个余数r r2 2;(r(r0 0=r=r1 1qq2 2+r+r2 2) ) 依次计算直至依次计算直至r rn n0 0,此时所得到的,此时所得到的r rn-1n-1 即为所求的最大公约数。即为所求的最大公约数。 辗转相除法是一个反复执行直到余数等于辗转相除法是一个反复执行直到余数等于0停止的步骤,这实际上是停止
6、的步骤,这实际上是一个循环结构。一个循环结构。8251=61051+2146 6105=21462+1813 2146=18131+3331813=3335+148333=1482+37148=374+0m = n q r用程序框图表示出右边的过程用程序框图表示出右边的过程r=m MOD nm = nn = rr=0?是否辗转相除除法的程序框图与程序 否是九章算术九章算术更相减损术更相减损术 算理:算理:可半者半之,不可半者,副置分母、子之数,以少减多,更相减可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也,以等数约之。损,求其等也,以等数约之。第一步:第一步:任意给定两个
7、正整数;判断他们是否都是偶数。若是,则用任意给定两个正整数;判断他们是否都是偶数。若是,则用2约简;若不是则执行第二步。约简;若不是则执行第二步。第二步:第二步:以较大的数减较小的数,接着把所得的差与较小的数比较,并以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止,则这个以大数减小数。继续这个操作,直到所得的减数和差相等为止,则这个等数就是所求的最大公约数。等数就是所求的最大公约数。例例3 用更相减损术求用更相减损术求98与与63的最大公约数的最大公约数解:由于解:由于63不是偶数,把不是偶数,把98和和63以大数减小数,并辗转相减以
8、大数减小数,并辗转相减 9863356335283528728721217141477所以,所以,98和和63的最大公约数等于的最大公约数等于7 练习练习2 2:用更相减损术求两个正数:用更相减损术求两个正数8484与与7272的最大的最大公约数。公约数。 (12)(12)第一步第一步,给定两个正整数给定两个正整数,不妨设不妨设mn,第二步第二步,若若m,n都是偶数都是偶数,则不断用则不断用2约简约简,使使他们不同时是偶数他们不同时是偶数,约简后的两个数仍记为约简后的两个数仍记为m,n第三步第三步,d=m-n第四步第四步,判断判断”d0”是否成立是否成立,若是若是,则将则将n,d 中较大者记为
9、中较大者记为m,较小的记为较小的记为n,返回第三返回第三步步;否则否则,2k *d(k是约简整数的是约简整数的2的个数的个数)为为所求的最大公约数所求的最大公约数.更相减损术算法更相减损术算法开始开始输输m,n(mn)K=0m,n为偶数为偶数?K=k+1m=m/2n=n/2d=m-ndn?dn?是是否否m=nn=dd=m-nm=d是是输出输出2k d结束结束是是否否否否INPUT “m,n=“;m,nIF mn THEN a=m m=n n=aEND IFK=0WHILE m MOD 2=0 AND n MOD 2=0 m=m/2 n=n/2 k=k+1WEND d=m- nWhile dn
10、IF dn then m=d ELSE m=n n=d End if d=m-nWend d=2kdPRINT dEnd 辗转相除法与更相减损术的比较辗转相除法与更相减损术的比较: : (1 1)都是求最大公约数的方法,计算上辗)都是求最大公约数的方法,计算上辗转相除法以除法为主,更相减损术以减法为主转相除法以除法为主,更相减损术以减法为主; ;计算次数上辗转相除法计算次数相对较少,特计算次数上辗转相除法计算次数相对较少,特别当两个数字大小区别较大时计算次数的区别别当两个数字大小区别较大时计算次数的区别较明显。较明显。(2 2)从结果体现形式来看,辗转相除法体)从结果体现形式来看,辗转相除法体现结果是以相除余数为现结果是以相除余数为0 0则得到,而更相减损术则得到,而更相减损术则以减数与差相等而得到则以减数与差相等而得到. .