《辗转相除法欧几里得算法.pptx》由会员分享,可在线阅读,更多相关《辗转相除法欧几里得算法.pptx(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、3 59 15问题1:在小学,我们已经学过求最大公约数的知识,你能求出18与30的最大公约数吗?创设情景,揭示课题 18 302318和30的最大公约数是23=6.先用两个数公有的质因数连续去除,一直除到所得的商是互质数为止,然后把所有的除数连乘起来.第1页/共20页17练习1、求两个正整数的最大公约数(1)求25和35的最大公约数(2)求49和63的最大公约数2、求204与85的最大公约数 25(1)5535749(2)77639所以,25和35的最大公约数为5所以,49和63的最大公约数为7第2页/共20页2 求两个正数a=204和b=85的最大公约数。v分析:204与85两数都比较大,而
2、且没有明显的公约数,如能把它们都变小一点,根据已有的知识即可求出最大公约数20485234显然204的最大公约数也必是85的约数,同样204与85的公约数也必是34的约数,所以204与85的最大公约数也是85与34的最大公约数。853421734172+0则17为204与85的最大公约数。这就是辗转相除法第3页/共20页辗转相除法(欧几里得算法)用辗转相除法求8251和6105的最大公约数第一步 用两数中较大的数除以较小的数,求得商和余数8251=61051+2146结论:8251和6105的公约数就是6105和2146的公约数,求8251和6105的最大公约数,只要求出6105和2146的公
3、约数就可以了。第二步 对6105和2146重复第一步的做法6105=21462+1813同理6105和2146的最大公约数也是2146和1813的最大公约数。第4页/共20页完整的过程8251=61051+2146 6105=21462+1813 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的最大公约数 第5页/共20页
4、练习1:利用辗转相除法求两数4081与20723的最大公约数.20723=40815+318;4081=31812+265;318=2651+53;265=535+0.(53)第6页/共20页利用辗转相除法求最大公约数的步骤如下:第一步:用较大的数m除以较小的数n得到一个商q0和一个余数r0;(m=nq0+r0)第二步:若r00,则n为m,n的最大公约数;若r00,则用除数n除以余数r0得到一个商q1和一个余数r1;(n=r0q1+r1)第三步:若r10,则r0为m,n的最大公约数;若r10,则用除数r0除以余数r1得到一个商q2和一个余数r2;(r0=r1q2+r2)依次计算直至rn0,此时
5、所得到的rn-1 即为所求的最大公约数。第7页/共20页思考1:从上面的步骤中可以得出辗转相除法算法步骤为:S1:给定两个正整数m,nS2:用大数除以小数,计算m除以n所得的余数;S3:除数变成被除数,余数变成除数,即 m=n,n=rS4:重复S2,直到余数为0,即 若r=0,则m,n 的最大公约数为m,否则返回S2第8页/共20页 辗转相除法是一个反复执行直到余数等于0停止的步骤,这实际上是一个循环结构。8251=61051+2146 6105=21462+1813 2146=18131+3331813=3335+148333=1482+37148=374+0m=n q r用程序框图表示出右
6、边的过程r=m MOD nm=nn=rr=0?是否第9页/共20页r=m MOD nm=nn=rr=0?是否开始 输入两个正数m,n 输出m,n结束INPUT m,nDO r=m MOD nm=nn=rLOOP UNTIL r=0PRINT mEND第10页/共20页思考:你能用当型循环结构构造算法,求两个正整数的最大公约数吗?写出算法步骤、程序框图和程序。第11页/共20页 输入两个正数m,n否开始r=m MOD nr0?输出n结束m=nn=r是INPUT m,nr=m MOD nWHILE r0 m=nn=rr=m MOD n WENDPRINT nEND第12页/共20页九章算术更相减损
7、术 算理:可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也,以等数约之。第一步:任意给定两个正整数;判断他们是否都是偶数。若是,则用2约简;若不是则执行第二步。第二步:以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止,则这个等数或这个数与约简的数的乘积就是所求的最大公约数。第13页/共20页例3 用更相减损术求98与63的最大公约数解:由于63不是偶数,把98和63以大数减小数,并辗转相减 9863356335283528728721217141477所以,98和63的最大公约数等于7 练习2:用更相减损术求两个正
8、数84与72的最大公约数。(12)第14页/共20页思考:你能根据更相减损术设计程序,求两个正整数的最大公约数吗?S1:给定两个正整数 m,n不妨设mn;S2:若m,n都是偶数,则不断用2约简,使它们不同时是偶数,约简后的两个数仍记为m,n;S3:d=m-n;S4:判断“dn”是否成立。若是,则将n,d中的较大者记为m,较小者记为n,返回s3;否则,2kd(k时约简整数的2的个数)为所求的最大公约数。第15页/共20页开始输m,n(mn)K=0M,n为偶数?K=k+1M=m/2N=n/2D=m-nDn?Dn?否M=nN=dD=m-nM=d是输出2k*d结束是否否是第16页/共20页INPUT
9、“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 IF dn then m=d ELSE m=n n=d End if d=m-nWend d=2k*dPRINT dEnd 第17页/共20页练习:分别用辗转相除法和更相减损术求204与85的最大公约数。解:第18页/共20页回顾反思:辗转相除法与更相减损术的比较:(1)都是求最大公约数的方法,计算上辗转相除法以除法为主,更相减损术以减法为主;计算次数上辗转相除法计算次数相对较少,特别当两个数字大小区别较大时计算次数的区别较明显。(2)从结果体现形式来看,辗转相除法体现结果是以相除余数为0则得到,而更相减损术则以减数与差相等而得到.(3)辗转相除法是当大数被小数除尽时,结束除法运算,较小的数就是最大公约数更相减损术是当大数减去小数的差等于小数时减法停止较小的数就是最大公约数 求三个以上(含三个数)的数的最大公约数时,可依次通过求两个数的最大公约数与第三数的最大公约数来求得第19页/共20页感谢您的观看!第20页/共20页