13算法案例.ppt
《13算法案例.ppt》由会员分享,可在线阅读,更多相关《13算法案例.ppt(66页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1.3 1.3 算法案例算法案例1.3.4 1.3.4 十进制化十进制化K K进制进制1.3.1 1.3.1 辗转相除法和更相减损术辗转相除法和更相减损术1.3.2 1.3.2 秦九韶算法秦九韶算法1.3.3 K1.3.3 K进制化十进制进制化十进制1.3 1.3 算法案例算法案例1.3.1 1.3.1 辗转相除法辗转相除法和更相减损术和更相减损术复习复习1.1.研究一个实际问题的算法,主要从哪几方面展开?研究一个实际问题的算法,主要从哪几方面展开?2.2.在程序框图中算法的基本逻辑结构有哪几种?在程序框图中算法的基本逻辑结构有哪几种?3.3.在程序设计中基本的算法语句有哪几种?在程序设计中基
2、本的算法语句有哪几种?算法步骤、程序框图和编写程序算法步骤、程序框图和编写程序三方面展开三方面展开.顺序结构、条件结构、循环结构顺序结构、条件结构、循环结构输入语句、输出语句、赋值语句、条件语句、循环语句输入语句、输出语句、赋值语句、条件语句、循环语句探究一,辗转相除法思考思考1:在小学中我们是如何求出两个正整数在小学中我们是如何求出两个正整数的最大公约数的呢的最大公约数的呢?算法案例算法案例之求最大公约数之求最大公约数求以下几组正整数的最大公约数。(注:若整数m和n满足n整除m,则(m,n)=n。用(m,n)来表示m和n的最大公约数。)(1)(18,30)(2)(24,16)(3)(63,6
3、3)(4)(72,8)(5)(301,133)解:2 1 8 2 4 用公有质因数2除,3 9 1 2 用公有质因数3除,3 4 3和4互质不除了。得:18和24最大公约数是:236 例、求18与24的最大公约数:6;8;63;8;7;短除法短除法想一想,如何求8251与6105的最大公约数?思考思考2:2:对于对于82518251与与61056105这两个数,它们这两个数,它们的最大公的最大公约数是多少?你是怎样得到的?约数是多少?你是怎样得到的?由于它们公有的质因数较大,利用上述方法求最由于它们公有的质因数较大,利用上述方法求最大公约数就比较困难大公约数就比较困难.有没有其它的方法可以较简
4、单有没有其它的方法可以较简单的找出它们的最大公约数呢?的找出它们的最大公约数呢?思考思考3 3:注意到:注意到8251=61058251=61051+21461+2146,那么,那么82518251与与61056105这两个数的公约数和这两个数的公约数和61056105与与21462146的公约数有什么的公约数有什么关系?关系?我们发现我们发现6105=21466105=21462+18132+1813,同理,同理,61056105与与21462146的公约数和的公约数和21462146与与18131813的公约数相等的公约数相等.思考思考4 4:重复上述操作,你能得到:重复上述操作,你能得到
5、82518251与与61056105这这两个数的最大公约数吗?两个数的最大公约数吗?2146=18132146=18131+3331+333,148=37148=374+0.4+0.333=148333=1482+372+37,1813=3331813=3335+1485+148,8251=61058251=61051+21461+2146,6105=21466105=21462+18132+1813,定义定义:所谓的辗转相除法,就是对于给定的两个数,用较大的数除以较小的数,若余数不为零,则将余数和较小的数构成新的数对,继续上面的除法,直到大数被小数除尽,则这是较小的数就是原来两个数的最大公约
6、数第一步,给定两个正整数第一步,给定两个正整数m m,n(mn).n(mn).第二步,计算第二步,计算m m除以除以n n所得的余数所得的余数r.r.第三步,第三步,m=nm=n,n=r.n=r.第四步,若第四步,若r=0r=0,则,则m m,n n的最大公约数等于的最大公约数等于m m;否则,返回第二步否则,返回第二步.思考思考5:5:你能把辗转相除法编成一个计算机程序吗?你能把辗转相除法编成一个计算机程序吗?程序框图程序框图开始开始输入输入m m,n n求求m m除以除以n n的余数的余数r rm=nm=nn=rn=rr=0r=0?是是输出输出m m结束结束否否INPUT mINPUT m
7、,n nDODOr=m MOD nr=m MOD nm=nm=nn=rn=rLOOP UNTIL r=0LOOP UNTIL r=0PRINT mPRINT mENDEND 思考思考6:6:如果用当型循环结构构造算法,则用辗如果用当型循环结构构造算法,则用辗转相除法求两个正整数转相除法求两个正整数m m、n n的最大公约数的程序框的最大公约数的程序框图和程序分别如何表示?图和程序分别如何表示?开始开始输入输入m m,n n求求m m除以除以n n的余数的余数r rm=nm=nr r00?否否输出输出m m结束结束是是n=rn=rINPUT mINPUT m,n nWHILE r0WHILE r
8、0r=m MOD nr=m MOD nm=nm=nn=rn=rWENDWENDPRINT mPRINT mENDEND练习:用辗转相除法求下列两数的最大公约数:(1)(225,135)(2)(98,196)(3)(72,168)(4)(153,119)45982417二、更相减损术二、更相减损术 九章算术是中国古代的数学专著,其中的九章算术是中国古代的数学专著,其中的“更相减损术更相减损术”也可以用来求两个数的最大公约数,也可以用来求两个数的最大公约数,即即“可半者半之,不可半者,副置分母、子之数,可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也以少减多,更相减损,求其等也
9、.以等数约之以等数约之.”意思是:意思是:第一步:任意给定两个正整数,判断它们是否第一步:任意给定两个正整数,判断它们是否都是偶数都是偶数.若是,用若是,用2约简;若不是,执行第二步约简;若不是,执行第二步.第二步:以较大的数减去较小的数,接着把差第二步:以较大的数减去较小的数,接着把差与较小的数比较,并以大数减小数与较小的数比较,并以大数减小数.继续这个操作,继续这个操作,直到所得的数相等为止,则这个等数或这个数与约直到所得的数相等为止,则这个等数或这个数与约简的数的乘积就是所求的最大公约数简的数的乘积就是所求的最大公约数.例例1 1:用更相减损术求:用更相减损术求9898与与6363的最大
10、公约数的最大公约数.98-63=3598-63=35,14-7=7.14-7=7.21-7=1421-7=14,28-7=2128-7=21,35-28=735-28=7,63-35=2863-35=28,因为因为63不是偶数,所以不是偶数,所以所以最大公约数是所以最大公约数是7.例例2 2 分别用辗转相除法和更相减损术求分别用辗转相除法和更相减损术求168168与与9393的最大公约数的最大公约数.168=93168=931+751+75,93=7593=751+181+18,75=1875=184+34+3,18=318=36.6.辗转相除法:辗转相除法:更相减损术更相减损术:168-93
11、=75 168-93=75,93-75=18 93-75=18,75-18=57 75-18=57,57-18=39 57-18=39,39-18=21 39-18=21,21-18=3 21-18=3,18-3=15 18-3=15,15-3=12 15-3=12,12-3=9 12-3=9,9-3=6 9-3=6,6-3=3.6-3=3.例例4 4 求求325325,130130,270270三个数的最大公约数三个数的最大公约数.因为因为325=130325=1302+652+65,130=65130=652 2,所以,所以325325与与130130的最大公约数是的最大公约数是65.65
12、.因为因为270=65270=654+104+10,65=1065=106+56+5,10=510=52 2,所,所以以6565与与270270最大公约数是最大公约数是5.5.故故325325,130130,270270三个数的最大公约数是三个数的最大公约数是5.5.练习练习:用更相减损术求两个正整数用更相减损术求两个正整数m m,n n的最大公的最大公约数,可以用什么逻辑结构来构造算法?其算法步骤约数,可以用什么逻辑结构来构造算法?其算法步骤如何设计?如何设计?第一步,给定两个正整数第一步,给定两个正整数m m,n(mn).n(mn).第二步,计算第二步,计算m-nm-n所得的差所得的差k.
13、k.第三步,比较第三步,比较n n与与k k的大小,其中大者用的大小,其中大者用m m表示,表示,小者用小者用n n表示表示.第四步,若第四步,若m=nm=n,则,则m m,n n的最大公约数等于的最大公约数等于m m;否则,返回第二步否则,返回第二步.讨论讨论:该算法的程序框图如何表示?该算法的程序框图如何表示?开始开始输入输入m m,n nnknk?m=nm=n是是输出输出m m结束结束mnmn?k=m-nk=m-n是是否否n=kn=km=km=k否否 讨论讨论:该程该程序框图对应的程序框图对应的程序如何表述?序如何表述?INPUT mINPUT m,n nWHILE mWHILE mn
14、nk=m-nk=m-nIF nk THENIF nk THENm=nm=nn=kn=kELSEELSEm=km=kEND IFEND IFWENDWENDPRINT mPRINT mENDEND开始开始输入输入m m,n nnknk?m=nm=n是是输出输出m m结束结束mnmn?k=m-nk=m-n是是否否n=kn=km=km=k否否布置作业:布置作业:P45P45练习:练习:1.1.P48P48习题习题1.3A1.3A组:组:1.1.1.3.2 1.3.2 秦九韶算法秦九韶算法 1 1、什么是辗转相除法和更相减损术?、什么是辗转相除法和更相减损术?2 2、辗转相除法和更相减损术,是求两个正
15、整、辗转相除法和更相减损术,是求两个正整数的最大公约数的优秀算法,我们将算法转化为程数的最大公约数的优秀算法,我们将算法转化为程序后,就可以由计算机来执行运算,实现了古代数序后,就可以由计算机来执行运算,实现了古代数学与现代信息技术的完美结合学与现代信息技术的完美结合.复习复习探究三、秦九昭算法思考思考1,在初中在初中,我们是如何求一个多项式的我们是如何求一个多项式的值的值的?思考思考2,已知一个已知一个n 次多项式次多项式f(x)=anxn+an-1xn-1+a1x+a0当当x=x0时,除时,除了用代入法求解外是否还有更好的方法呢了用代入法求解外是否还有更好的方法呢?秦九韶算法秦九韶算法的基
16、本思想的基本思想 思考思考1:1:对于多项式对于多项式f(x)=xf(x)=x5 5+x+x4 4+x+x3 3+x+x2 2+x+1+x+1,求,求f(5)f(5)的值的值.4+3+2+1=104+3+2+1=10次乘法运算,次乘法运算,5 5次加法运算次加法运算.分析:把分析:把5 5代入多项式,若先计算各项的值,代入多项式,若先计算各项的值,然后再相加,那么一共要做:然后再相加,那么一共要做:思考思考2:2:另一种做法是先计算另一种做法是先计算x x2 2的值,然后依的值,然后依次计算次计算x x2 2x x,(x(x2 2x)x)x x,(x(x2 2x)x)x)x)x x的的值,这样
17、每次都可以利用上一次计算的结果,这值,这样每次都可以利用上一次计算的结果,这时一共做了:时一共做了:4 4次乘法运算,次乘法运算,5 5次加法运算次加法运算.思考思考3:3:有没有更有效的算法呢?利用后一种算有没有更有效的算法呢?利用后一种算法求多项式法求多项式f(x)=af(x)=an nx xn n+a+an-1n-1x xn-1n-1+a+a1 1x+ax+a0 0的值,这的值,这个多项式应写成哪种形式?个多项式应写成哪种形式?f(x)=af(x)=an nx xn n+a+an-1n-1x xn-1n-1+a+a1 1x+ax+a0 0=(a=(an nx xn-1n-1+a+an-1
18、n-1x xn-2n-2+a+a2 2x+ax+a1 1)x+a)x+a0 0=(a=(an nx xn-2n-2+a+an-1n-1x xn-3n-3+a+a2 2)x+a)x+a1 1)x+a)x+a0 0 =(=(a(an nx+ax+an-1n-1)x+a)x+an-2n-2)x+)x+a+a1 1)x+a)x+a0 0.这就是我国南宋时期数学家秦九韶在他的著作这就是我国南宋时期数学家秦九韶在他的著作数书九章中提出的算法数书九章中提出的算法.思考思考4:4:对于对于f(x)=(f(x)=(a(an nx+ax+an-1n-1)x+a)x+an-2n-2)x+)x+a+a1 1)x+a)
19、x+a0 0,由内向外逐层计算一次多项式的值,其算法步骤如何?由内向外逐层计算一次多项式的值,其算法步骤如何?第一步,计算第一步,计算v v1 1=a=an nx+ax+an-1n-1.第二步,计算第二步,计算v v2 2=v=v1 1x+ax+an-2n-2.第三步,计算第三步,计算v v3 3=v=v2 2x+ax+an-3n-3.第第n n步,计算步,计算v vn n=v=vn-1n-1x+ax+a0 0.上述方法称为秦九韶算法上述方法称为秦九韶算法.思考思考5:5:在秦九韶算法中,记在秦九韶算法中,记v v0 0=a=an n,那么第,那么第k k步的步的算式是什么?算式是什么?v v
20、k k=v=vk-1k-1x+ax+an-kn-k(k=1(k=1,2 2,n)n)解:解:f(x)=(4x+2)x+3.5)x-2.6)x+1.7)x-0.8.f(x)=(4x+2)x+3.5)x-2.6)x+1.7)x-0.8.v v1 1=4=45+2=225+2=22;v v2 2=22=225+3.5=113.55+3.5=113.5;v v3 3=113.5=113.55-2.6=564.95-2.6=564.9;v v4 4=564.9=564.95+1.7=2826.25+1.7=2826.2;v v5 5=2826.2=2826.25-0.8=14130.2.5-0.8=14
21、130.2.所以所以f(5)=14130.2.f(5)=14130.2.例例1 1 已知一个已知一个5 5次多项式为次多项式为 用秦九韶算法求用秦九韶算法求f(5)f(5)的值的值.练习:阅读下列程序,说明它解决的实际问题是什么?练习:阅读下列程序,说明它解决的实际问题是什么?INPUT INPUT“x=x=”;a an=0n=0y=0y=0WHLE n5WHLE n=0WHILE i=0INPUT INPUT“ai=ai=”;a a v=v*x+a v=v*x+ai=i-1i=i-1 WEND WENDPRINT vPRINT vENDENDPRINT PRINT “i=i=”;i i小结小
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教育 专题 13 算法 案例
限制150内