《1.3算法案例(2课时).ppt》由会员分享,可在线阅读,更多相关《1.3算法案例(2课时).ppt(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1.3 算法案例算法案例问题问题1 1 求求204204与与8585的最大公约数的最大公约数 问题问题2 2 求求82518251与与61056105的最大公约数的最大公约数 204204与与8585的最大公约数是的最大公约数是1717 82518251与与61056105的最大公约数是的最大公约数是34 34 辗转相除法辗转相除法:我们可以证明,对于任意两个正整我们可以证明,对于任意两个正整数,上述步骤总可以在有限步之后完成,从而总数,上述步骤总可以在有限步之后完成,从而总可以用辗转相除的方法求出最大公约数可以用辗转相除的方法求出最大公约数 案例1:辗转相除法例例1 观察用辗转相除法求观察用
2、辗转相除法求8251和和6105的最大公约的最大公约数的过程数的过程 第一步第一步 用两数中较大的数除以较小的数,求得商和余数用两数中较大的数除以较小的数,求得商和余数8251=61051+21468251=61051+2146结论:结论:82518251和和61056105的公约数就是的公约数就是61056105和和21462146的公约数,求的公约数,求82518251和和61056105的最大公约数,只要求出的最大公约数,只要求出61056105和和21462146的公约数的公约数就可以了。就可以了。第二步第二步 对对61056105和和21462146重复第一步的做法重复第一步的做法6
3、105=21462+18136105=21462+1813同理同理61056105和和21462146的最大公约数也是的最大公约数也是21462146和和18131813的最大公的最大公约数。约数。完整的过程完整的过程8251=61051+2146 6105=21462+1813 2146=18131+3331813=3335+148333=1482+37148=374+0显然显然3737是是148148和和3737的最大公约数,也就是的最大公约数,也就是82518251和和61056105的最大公约数的最大公约数 例例2 用辗转相除法求用辗转相除法求225和和135的最大公约数的最大公约数显
4、然显然4545是是9090和和4545的最大公约数,也就是的最大公约数,也就是225225和和135135的最大公约数的最大公约数 思考思考1 1:从上面的两个例子可以看出计算的规律是什么?:从上面的两个例子可以看出计算的规律是什么?S1:用大数除以小数:用大数除以小数S2:除数变成被除数,余数变成除数:除数变成被除数,余数变成除数S3:重复:重复S1,直到余数为,直到余数为0225=1351+90135=901+4590=452 辗转相除法中的关键步骤是哪种逻辑结构?辗转相除法是一个反复辗转相除法中的关键步骤是哪种逻辑结构?辗转相除法是一个反复执行直到余数等于执行直到余数等于0 0停止的步骤
5、,这实际上是一个循环结构。停止的步骤,这实际上是一个循环结构。8251=61051+2146 6105=21462+1813 2146=18131+3331813=3335+148333=1482+37148=374+0m=n q r用程序框图表示出右边的过程用程序框图表示出右边的过程r=m MOD nm=nn=rr=0?是否 思考思考2 2:辗转相除法中的关键步骤是哪种逻辑结构?:辗转相除法中的关键步骤是哪种逻辑结构?算理:算理:可半者半之,不可半者,副置分母、子之数,以少减可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也,以等数约之。多,更相减损,求其等也,以等数约之。
6、第一步:第一步:任意给顶两个正整数;判断他们是否都是偶数。若任意给顶两个正整数;判断他们是否都是偶数。若是,则用是,则用2 2约简;若不是则执行第二步。约简;若不是则执行第二步。第二步:第二步:以较大的数减较小的数,接着把所得的差与较小的以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止,则这个等数就是所求的最大公约数。和差相等为止,则这个等数就是所求的最大公约数。更相减损术 例例3 用更相减损术求用更相减损术求98与与63的最大公约数的最大公约数解:由于解:由于6363不是偶数,把不
7、是偶数,把9898和和6363以大数减小数,并辗转相减以大数减小数,并辗转相减 989863633535636335352828353528287 728287 7212121217 7141414147 77 7所以,所以,9898和和6363的最大公约数等于的最大公约数等于7 7 例例1 计算多项式计算多项式()=当当x x=5=5的值的值因为因为()=所以所以(5)=55555=3125625125255=3906算法算法2:(5)=55555=5(5555)=5(5(555 )=5(5(5(55)=5(5(5(5 (5 )案例2:秦九韶算法算法算法1:设设是一个是一个n次的多项次的多项
8、式式对该多项式按下面的方式进行改写对该多项式按下面的方式进行改写:要求多项式的值,应该先算最内层的一次多项式的值,即要求多项式的值,应该先算最内层的一次多项式的值,即然后,由内到外逐层计算一次多项式的值,即然后,由内到外逐层计算一次多项式的值,即这种将求一个这种将求一个n次多项式次多项式f(x)的值转化成求的值转化成求n个一次多项式的值的个一次多项式的值的方法,称为方法,称为秦九韶算法秦九韶算法。例例2 已知一个五次多项式为已知一个五次多项式为用秦九韶算法求这个多项式当用秦九韶算法求这个多项式当x=5的值。的值。解:解:将多项式变形:将多项式变形:按由里到外的顺序,依此计算一次多项式当按由里到
9、外的顺序,依此计算一次多项式当x=5时的值:时的值:所以,当所以,当x=5时,多项式的值等于时,多项式的值等于17255.2你从中看到了怎样的规律?怎么用程序框图来描述呢?开始开始输入输入f(x)的系数:的系数:a0、a1、a2、a3、a4、a5输入输入x0n=0v=a5v=vx0+a5-nn=n+1n 5?输出输出v结束结束否否是是1 1、什么是进位制?、什么是进位制?2 2、最常见的进位制是什么?除此之外还有、最常见的进位制是什么?除此之外还有哪些常见的进位制?请举例说明哪些常见的进位制?请举例说明进位制是人们为了计数和运算方便而约定的记数系统。进位制是人们为了计数和运算方便而约定的记数系
10、统。案例3:进位制1 1、我们了解十进制吗?所谓的十进制,它是如何构、我们了解十进制吗?所谓的十进制,它是如何构成的?成的?十进制由两个部分构成十进制由两个部分构成例如:例如:37213721其它进位制的数又是如何的呢?其它进位制的数又是如何的呢?第一、它有第一、它有0 0、1 1、2 2、3 3、4 4、5 5、6 6、7 7、8 8、9 9十个数字;十个数字;第二、它有第二、它有“权位权位”,即,即从右往左从右往左为个位、十位、百位、为个位、十位、百位、千位等等。千位等等。(用用10个数字来记数,称个数字来记数,称基数基数为为10)表示有:表示有:1 1个个1 1,2 2个十,个十,7 7
11、个百即个百即7 7个个1010的平方,的平方,3 3个千即个千即3 3个个1010的立方的立方2 2、二进制二进制二进制是用二进制是用0 0、1 1两个数字来描述的。如两个数字来描述的。如1100111001等等一、二进制的表示方法一、二进制的表示方法区分的写法:区分的写法:1100111001(2 2)或者(或者(1100111001)2 28 8进制呢?进制呢?如如73427342(8)(8)k k进制呢?进制呢?a an na an-1n-1a an-2n-2a a2 2a a1(k)1(k)?二、二进制与十进制的转换二、二进制与十进制的转换1、二进制数转化为十进制数、二进制数转化为十进
12、制数例例1 将二进制数将二进制数110011(2)化成十进制数化成十进制数解:解:根据进位制的定义可知根据进位制的定义可知所以,所以,110011(2)=51。练习练习将下面的二进制数化为十进制数?将下面的二进制数化为十进制数?(1)11(2)111(3)1111(4)111112、十进制转换为二进制、十进制转换为二进制(除除2取余法:用取余法:用2连续去除连续去除89或所得的商,然后取余数或所得的商,然后取余数)例例2 把把89化为二进制数化为二进制数根据根据“逢二进一逢二进一”的原则,有的原则,有892441 2(2220)+1 2(2(2110)+0)+1 2(2(2(2 51)+0)+
13、0)+15 2 212(2(2(2(221)1)0)0)189126025124123022021120所以:所以:89=1011001(2)2(2(2(2321)0)0)12(2(242220)0)12(2523+2200)12624+23002189244144 222022 211011 2 51 2(2(2(2(2 21)+1)+0)+0)+1所以所以892(2(2(2(2 2 1)1)0)0)1余数余数注意:注意:1.最后一步商为最后一步商为0,2.将上式各步所得的余数将上式各步所得的余数从下到上排列从下到上排列,得到:,得到:89=1011001(2)100110122222225
14、21011224889!练习练习将下面的十进制数化为二进制数?将下面的十进制数化为二进制数?(1)10(2)20(3)128(4)256例例4 把把89化为五进制数化为五进制数3、十进制转换为其它进制、十进制转换为其它进制解:解:根据根据除除k取余法取余法以以5作为除数,相应的除法算式为:作为除数,相应的除法算式为:所以,所以,89=324(5)。895175350423余数余数将将k k进制数进制数a a转换为十进制数转换为十进制数(共有共有 n n位位)的程序的程序a=aa=an na an-1n-1 a a3 3a a2 2a a1(k)1(k)=a=an nk k(n-1)+(n-1)
15、+a an-1n-1k k(n-2)(n-2)+a+a3 3k k2 2+a+a2 2k k1 1+a a1 1k k0 0b=ab=a1 1k k0 0b=ab=a2 2k k1 1+b+bb=ab=a3 3k k2 2+b bb=ab=an nk kn-1 n-1+b+ba ai i=GET ai=GET aiGETGET函数用于取出函数用于取出a a的右数第的右数第i i位数位数INPUT a,k,nINPUT a,k,ni=1i=1b=0b=0WHILE i=nWHILE i=nt=GET ait=GET aib=t*k(i-1)+bb=t*k(i-1)+bi=i+1i=i+1WENDWENDPRINT bPRINT bENDENDi=i+1i=i+1i=1i=1小结小结2 2 2 2、掌握二进制与十进制之间的转换、掌握二进制与十进制之间的转换、掌握二进制与十进制之间的转换、掌握二进制与十进制之间的转换1 1 1 1、进位制的概念、进位制的概念、进位制的概念、进位制的概念
限制150内