1[1]3算法案例(第一二课时)_第1页
1[1]3算法案例(第一二课时)_第2页
1[1]3算法案例(第一二课时)_第3页
1[1]3算法案例(第一二课时)_第4页
1[1]3算法案例(第一二课时)_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.3算法案例,1.3.4十进制化K进制,1.3.1辗转相除法和更相减损术,1.3.2秦九韶算法,1.3.3K进制化十进制,1.3算法案例,1.3.1辗转相除法和更相减损术,复习,1.研究一个实际问题的算法,主要从哪几方面展开?,2.在程序框图中算法的基本逻辑结构有哪几种?,3.在程序设计中基本的算法语句有哪几种?,算法步骤、程序框图和编写程序三方面展开.,顺序结构、条件结构、循环结构,输入语句、输出语句、赋值语句、条件语句、循环语句,探究一,辗转相除法,思考1:在小学中我们是如何求出两个正整数的最大公约数的呢?,算法案例之求最大公约数,求以下几组正整数的最大公约数。(注:若整数m和n满足n整除m,则(m,n)=n。用(m,n)来表示m和n的最大公约数。)(1)(18,30)(2)(24,16)(3)(63,63)(4)(72,8)(5)(301,133),例、求18与24的最大公约数:,6;,8;,63;,8;,7;,短除法,想一想,如何求8251与6105的最大公约数?,思考2:对于8251与6105这两个数,它们的最大公约数是多少?你是怎样得到的?,由于它们公有的质因数较大,利用上述方法求最大公约数就比较困难.有没有其它的方法可以较简单的找出它们的最大公约数呢?,思考3:注意到8251=61051+2146,那么8251与6105这两个数的公约数和6105与2146的公约数有什么关系?,我们发现6105=21462+1813,同理,6105与2146的公约数和2146与1813的公约数相等.,思考4:重复上述操作,你能得到8251与6105这两个数的最大公约数吗?,2146=18131+333,,148=374+0.,333=1482+37,,1813=3335+148,,8251=61051+2146,,6105=21462+1813,,定义:所谓的辗转相除法,就是对于给定的两个数,用较大的数除以较小的数,若余数不为零,则将余数和较小的数构成新的数对,继续上面的除法,直到大数被小数除尽,则这是较小的数就是原来两个数的最大公约数,辗转相除法求两个数的最大公约数,其算法可以描述如下:,辗转相除法是一个反复执行直到余数等于0停止的步骤,这实际上是一个循环结构,思考4:辗转相除直到何时结束?主要运用的是哪种算法结构?,如此循环,直到得到结果。,输入两个正整数m和n;,求余数r:计算m除以n,将所得余数存放到变量r中;,更新被除数和余数:m=n,n=r。,判断余数r是否为0:若余数为0则输出结果,否则转向第步继续循环执行。,第一步,给定两个正整数m,n(mn).,第二步,计算m除以n所得的余数r.,第三步,m=n,n=r.,第四步,若r=0,则m,n的最大公约数等于m;否则,返回第二步.,思考5:你能把辗转相除法编成一个计算机程序吗?,程序框图,INPUTm,n,DO,r=mMODn,m=n,n=r,LOOPUNTILr=0,PRINTm,END,思考6:如果用当型循环结构构造算法,则用辗转相除法求两个正整数m、n的最大公约数的程序框图和程序分别如何表示?,INPUTm,n,WHILEr0,r=mMODn,m=n,n=r,WEND,PRINTm,END,练习:用辗转相除法求下列两数的最大公约数:(1)(225,135)(2)(98,196)(3)(72,168)(4)(153,119),45,98,24,17,二、更相减损术,九章算术是中国古代的数学专著,其中的“更相减损术”也可以用来求两个数的最大公约数,即“可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也.以等数约之.”,意思是:,第一步:任意给定两个正整数,判断它们是否都是偶数.若是,用2约简;若不是,执行第二步.,第二步:以较大的数减去较小的数,接着把差与较小的数比较,并以大数减小数.继续这个操作,直到所得的数相等为止,则这个等数或这个数与约简的数的乘积就是所求的最大公约数.,例1:用更相减损术求98与63的最大公约数.,98-63=35,,14-7=7.,21-7=14,,28-7=21,,35-28=7,,63-35=28,,因为63不是偶数,所以,所以最大公约数是7.,例2分别用辗转相除法和更相减损术求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.,例3用更相减损术求80与36的最大公约数.,例4求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.,练习:用更相减损术求两个正整数m,n的最大公约数,可以用什么逻辑结构来构造算法?其算法步骤如何设计?,第一步,给定两个正整数m,n(mn).,第二步,计算m-n所得的差k.,第三步,比较n与k的大小,其中大者用m表示,小者用n表示.,第四步,若m=n,则m,n的最大公约数等于m;否则,返回第二步.,讨论:该算法的程序框图如何表示?,讨论:该程序框图对应的程序如何表述?,INPUTm,n,WHILEmn,k=m-n,IFnkTHEN,m=n,n=k,ELSE,m=k,ENDIF,WEND,PRINTm,END,1、辗转相除法.,小结,2、更相减损术.,布置作业:P45练习:1.P48习题1.3A组:1.,1.3.2秦九韶算法,1、什么是辗转相除法和更相减损术?,2、辗转相除法和更相减损术,是求两个正整数的最大公约数的优秀算法,我们将算法转化为程序后,就可以由计算机来执行运算,实现了古代数学与现代信息技术的完美结合.,复习,探究三、秦九昭算法,思考1,在初中,我们是如何求一个多项式的值的?思考2,已知一个n次多项式f(x)=anxn+an-1xn-1+a1x+a0当x=x0时,除了用代入法求解外是否还有更好的方法呢?,秦九韶算法的基本思想,思考1:对于多项式f(x)=x5+x4+x3+x2+x+1,求f(5)的值.,4+3+2+1=10次乘法运算,5次加法运算.,分析:把5代入多项式,若先计算各项的值,然后再相加,那么一共要做:,思考2:另一种做法是先计算x2的值,然后依次计算x2x,(x2x)x,(x2x)x)x的值,这样每次都可以利用上一次计算的结果,这时一共做了:,4次乘法运算,5次加法运算.,思考3:有没有更有效的算法呢?利用后一种算法求多项式f(x)=anxn+an-1xn-1+a1x+a0的值,这个多项式应写成哪种形式?,f(x)=anxn+an-1xn-1+a1x+a0,=(anxn-1+an-1xn-2+a2x+a1)x+a0,=(anxn-2+an-1xn-3+a2)x+a1)x+a0,=,=(anx+an-1)x+an-2)x+a1)x+a0.,这就是我国南宋时期数学家秦九韶在他的著作数书九章中提出的算法.,思考4:对于f(x)=(anx+an-1)x+an-2)x+a1)x+a0,由内向外逐层计算一次多项式的值,其算法步骤如何?,第一步,计算v1=anx+an-1.,第二步,计算v2=v1x+an-2.,第三步,计算v3=v2x+an-3.,第n步,计算vn=vn-1x+a0.,上述方法称为秦九韶算法.,思考5:在秦九韶算法中,记v0=an,那么第k步的算式是什么?,vk=vk-1x+an-k(k=1,2,n),解:f(x)=(4x+2)x+3.5)x-2.6)x+1.7)x-0.8.,v1=45+2=22;,v2=225+3.5=113.5;,v3=113.55-2.6=564.9;,v4=564.95+1.7=2826.2;,v5=2826.25-0.8=14130.2.,所以f(5)=14130.2.,例1已知一个5次多项式为用秦九韶算法求f(5)的值.,练习:阅读下列程序,说明它解决的实际问题是什么?,INPUT“x=”;an=0y=0WHLEn=0,INPUT“ai=”;a,v=v*x+a,i=i-1,WEND,PRINTv,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论