《辗转相除法好》PPT课件.ppt
1.3算法案例,算 法 案 例(一),辗转相除法(欧几里得算法)与更相减损术,1、求两个正整数的最大公约数,(1)求25和35的最大公约数(2)求49和63的最大公约数,2、求8251和6105的最大公约数,所以,25和35的最大公约数为5,所以,49和63的最大公约数为7,辗转相除法(欧几里得算法),观察用辗转相除法求8251和6105的最大公约数的过程,第一步 用两数中较大的数除以较小的数,求得商和余数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,2146=18131+333,1813=3335+148,333=1482+37,148=374+0,例2 用辗转相除法求225和135的最大公约数,225=1351+90,135=901+45,90=452,显然37是148和37的最大公约数,也就是8251和6105的最大公约数,显然45是90和45的最大公约数,也就是225和135的最大公约数,思考1:从上面的两个例子可以看出计算的规律是什么?,S1:给定两个正整数m,n,S2:用大数除以小数,计算m除以n所得的余数;,S3:除数变成被除数,余数变成除数,即 m=n,n=r,S4:重复S2,直到余数为0,即 若r=0,则m,n 的最大公约数为m,否则返回S2,辗转相除法是一个反复执行直到余数等于0停止的步骤,这实际上是一个循环结构。,m=n q r,用程序框图表示出右边的过程,r=m MOD n,m=n,n=r,r=0?,是,否,思考2:辗转相除法中的关键步骤是哪种逻辑结构?,思考:你能用当型循环结构构造算法,求两个正整数的最大公约数吗?写出算法步骤、程序框图和程序。,INPUT m,n,WHILE n0,r=m MODn,m=n,n=r,WEND,PRINT m,END,练习1:利用辗转相除法求两数4081与20723的最大公约数.,20723=40815+318;4081=31812+265;318=2651+53;265=535+0.,(53),九章算术更相减损术,算理:可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也,以等数约之。,第一步:任意给定两个正整数;判断他们是否都是偶数。若是,则用2约简;若不是则执行第二步。,第二步:以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止,则这个等数就是所求的最大公约数。,例3 用更相减损术求98与63的最大公约数,解:由于63不是偶数,把98和63以大数减小数,并辗转相减,9863356335283528728721217141477,所以,98和63的最大公约数等于7,练习3:分别用辗转相除法和更相减损术求204与85的最大公约数。,解:,思考:你能根据更相减损术设计程序,求两个正整数的最大公约数吗?S1:给定两个正整数 m,n不妨设mn;S2:若m,n都是偶数,则不断用2约简,使它们不同时是偶数,约简后的两个数仍记为m,n;S3:d=m-n;S4:判断“dn”是否成立。若是,则将n,d中的较大者记为m,较小者记为n,返回s3;否则,2kd(k时约简整数的2的个数)为所求的最大公约数。,否,N=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-n,While dn IF dn then m=d ELSE m=n n=d End if d=m-nWend d=2k*dPRINT dEnd,例3 用更相减损术求98与63的最大公约数,解:由于63不是偶数,把98和63以大数减小数,并辗转相减,9863356335283528728721217211477,所以,98和63的最大公约数等于7,先约简,再求21与18的最大公约数,然后乘以两次约简的质因数4,理论迁移,例1 分别用辗转相除法和更相减损术求168与93的最大公约数.最小公倍数?,辗转相除法:168=931+75,93=751+18,75=184+3,18=36.,更相减损术: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.,例2、求325、130、270这三个数的最大公约数。,思路分析:求三个数的最大公约数可以先求出两个数的最大公约数,第三个数与前两个数的最大公约数的最大公约数即为所求。,例2 求325,130,270三个数的最大公约数.,因为325=1302+65,130=652,所以325与130的最大公约数是65.,因为270=654+10,65=106+5,10=52,所以65与270最大公约数是5.,故325,130,270三个数的最大公约数是5.,3.辗转相除法与更相减损术的比较:,(1)都是求最大公约数的方法,计算上辗转相除法以除法为主,更相减损术以减法为主;计算次数上辗转相除法计算次数相对较少,特别当两个数字大小区别较大时计算次数的区别较明显。(2)从结果体现形式来看,辗转相除法体现结果是以相除余数为0则得到,而更相减损术则以减数与差相等而得到.,作业:课本P45页练习T1;P48页A组T1.,