1.3 算法案例.ppt

上传人:laozhun 文档编号:2312973 上传时间:2023-02-11 格式:PPT 页数:24 大小:534.50KB
返回 下载 相关 举报
1.3 算法案例.ppt_第1页
第1页 / 共24页
1.3 算法案例.ppt_第2页
第2页 / 共24页
1.3 算法案例.ppt_第3页
第3页 / 共24页
1.3 算法案例.ppt_第4页
第4页 / 共24页
1.3 算法案例.ppt_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《1.3 算法案例.ppt》由会员分享,可在线阅读,更多相关《1.3 算法案例.ppt(24页珍藏版)》请在三一办公上搜索。

1、1.3 算法案例,冷水江市第一中学 杨玉林,最大公约数的求法,1.回顾算法的三种表述:,自然语言,程序框图,程序语言,(三种逻辑结构),(五种基本语句),2.,小学学过的求两个数最大公约数的方法?,先用两个公有的质因数连续去除,一直除到所得的商是互质数为止,然后把所有的除数连乘起来.,思考,(1)求两个正整数的最大公约数,例.求30和75的最大公约数,所以,25和35的最大公约数为5,(2)除了用这种方法外还有没有其它方法?,如何简洁的求8256和6105的最大公约数?,30,3,10,75,25,5,2,5,开始,i=m,输入:m,n,m MOD i0或 n MOD i0?,i=i-1,输出

2、:i,结束,N,Y,mn?,t=m,m=n,n=t,N,Y,穷举法(也叫枚举法)步骤:从两个数中较小数开始由大到小列举,直到找到公约数立即中断列举,得到的公约数便是最大公约数。,A.穷举法,Input“m,n=“;m,nIf mn then Swap m,nend if i=mWhile m mod io or n mod i0 i=i-1wendPrint iend,B.辗转相除法(欧几里得算法),下面我们介绍用辗转相除法求8251和6105的最大公约数的过程,第一步:用两数中较大的数除以较小的数,求得商和余数,结论:8251和6105的公约数就是6105和2146的公约数,求8251和61

3、05的最大公约数,只要求出6105和2146的公约数就可以了。,第二步:对6105和2146重复第一步的做法,8251=61051+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的最大公

4、约数,显然45是90和45的最大公约数,也就是225和135的最大公约数,思考1:从上面的两个例子可以看出计算的规律是什么?,S1:用大数除以小数,S2:除数变成被除数,余数变成除数,S3:重复S1,直到余数为0,辗转相除法是一个反复执行直到余数等于0停止的步骤,这实际上是一个循环结构。,m=n q r,用程序框图表示出右边的过程,r=m MOD n,m=n,n=r,r=0?,是,否,思考2:辗转相除法中的关键步骤是哪种逻辑结构?,辗转相除法(欧几里得算法),(1)算理:所谓辗转相除法,就是对于给定的两个数,用较大的数除以较小的数。若余数不为零,则将余数和较小的数构成新的一对数,继续上面的除法

5、,直到大数被小数除尽,则这时较小的数就是原来两个数的最大公约数。,(2)算法步骤,第一步:输入两个正整数m,n(mn).第二步:计算m除以n所得的余数r.第三步:m=n,n=r.第四步:若r0,则m,n的最大公约数等于m;否则转到第二步.第五步:输出最大公约数m.,(3)程序框图,(4)程序,INPUT“m,n=“;m,nIf mn thenSwap m,nend ifDO r=m MOD n m=n n=rLOOP UNTIL r=0PRINT mEND,九章算术更相减损术,算理:可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也,以等数约之。,第一步:任意给定两个正整数;

6、判断他们是否都是偶数。若是,则用2约简;若不是则执行第二步。,第二步:以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止,则这个等数就是所求的最大公约数。,例1 用更相减损术求98与63的最大公约数,解:由于63不是偶数,把98和63以大数减小数,并辗转相减,9863356335283528728721217211477,所以,98和63的最大公约数等于7,先约简,再求21与18的最大公约数,然后乘以两次约简的质因数4,2、更相减损术,(1)算理:所谓更相减损术,就是对于给定的两个数,用较大的数减去较小的数,然后将差和较小的数构成新的一

7、对数,再用较大的数减去较小的数,反复执行此步骤直到差数和较小的数相等,此时相等的两数便为原来两个数的最大公约数。,(2)算法步骤,第一步:输入两个正整数a,b(ab);第二步:若a不等于b,则执行第三步;否则转到第五步;第三步:把a-b的差赋予r;第四步:如果br,那么把b赋给a,把r赋给b;否则把r赋给a,执行第二步;第五步:输出最大公约数b.,(3)程序框图,(4)程序,INPUT“a,b=“;a,bWHILE ab r=a-b IF br THEN a=b b=r ELSE a=r END IFWENDPRINT bEND,输入a,b,是,否,b=r,a=b,r=a-b,a=r,否,是,

8、INPUT“a,b=“;a,bi=0r1=a mod 2r2=b mod 2While r1=0 and r2=0 a=a/2 b=b/2 r1=a mod 2 r2=b mod 2 i=i+1WendWHILE ab r=a-b IF br THEN a=b b=r ELSE a=r END IFWENDPRINT b*2iEND,程序:INPUT“a,b”;a,bi=0WHILE a MOD 2=0 AND b MOD 2=0 a=a/2 b=b/2 i=i+1 WEND DOIF ba THENt=aa=bb=tEND IFa=a-bLOOP UNTIL a=bPRINT a*2iEND

9、,练习:求324、243、135这三个数的最大公约数。,思路分析:求三个数的最大公约数可以先求出两个数的最大公约数,第三个数与前两个数的最大公约数的最大公约数即为所求。,思考?,设计一个称序,求已知n个正整数的最大公约数?,input“n=”;nprint“i=”;1input“ai=”;ai=1while i=n-1 i=i+1print“i=”;iinput“ai=”;b Do r=a mod b a=b b=r loop until r=0wendprint“The max is”;aend,辗转相除法,INPUT“a1”;aInput“n=“,nm=1While ma THEN t=a a=b b=t END IF a=a-b LOOP UNTIL a=b a=a*2iWendPrint“The max is”;aEND,更相减损术,比较辗转相除法与更相减损术的区别(1)都是求最大公约数的方法,计算上辗转相除法以除法为主,更相减损术以减法为主,计算次数上辗转相除法计算次数相对较少,特别当两个数字大小区别较大时计算次数的区别较明显。(2)从结果体现形式来看,辗转相除法体现结果是以相除余数为0则得到,而更相减损术则以减数与差相等而得到,小结,再 见,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号