版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1. 回顾算法的三种表示方法:回顾算法的三种表示方法:(1)、自然语言)、自然语言(2)、程序框图)、程序框图(3)、程序语言)、程序语言(三种逻辑结构)(三种逻辑结构)(五种基本语句(五种基本语句)复习引入2. 思考:思考:小学学过的求两个数的最大公约数的方法?小学学过的求两个数的最大公约数的方法? 先用两个公有的质因数连续去除,先用两个公有的质因数连续去除,一直除到所得的商是互质数为止,然后一直除到所得的商是互质数为止,然后把所有的除数连乘起来把所有的除数连乘起来.例:求下面两个正整数的最大公约数例:求下面两个正整数的最大公约数:(1)求)求25和和35的最大公约数的最大公约数(2)求)求
2、49和和63的最大公约数的最大公约数25(1)5535749(2)77639所以,所以,25和和35的最的最大公约数为大公约数为5所以,所以,49和和63的最的最大公约数为大公约数为7例:如何算出例:如何算出8251和和6105的最大公约数?的最大公约数?新课讲解:新课讲解:一、辗转相除法(欧几里得算法)一、辗转相除法(欧几里得算法)1、定义:、定义: 所谓辗转相除法,就是对于给定的所谓辗转相除法,就是对于给定的两个数,用较大的数除以较小的数。若两个数,用较大的数除以较小的数。若余数不为零,则将余数和较小的数构成余数不为零,则将余数和较小的数构成新的一对数,继续上面的除法,直到大新的一对数,继
3、续上面的除法,直到大数被小数除尽,则这时较小的数就是原数被小数除尽,则这时较小的数就是原来两个数的最大公约数。来两个数的最大公约数。 2、步骤、步骤:(以求(以求8251和和6105的最大公约数的过的最大公约数的过程为例)程为例)第一步第一步 用两数中较大的数除以较小的数,求得用两数中较大的数除以较小的数,求得商和余数商和余数:8251=61051+2146结论:结论: 8251和和6105的公约数就是的公约数就是6105和和2146的公约数,求的公约数,求8251和和6105的最大公约数,只要的最大公约数,只要求出求出6105和和2146的最大公约数就可以了。的最大公约数就可以了。第二步第二
4、步 对对6105和和2146重复第一步的做法重复第一步的做法6105=21462+1813同理同理6105和和2146的最大公约数也是的最大公约数也是2146和和1813的最大公约数。的最大公约数。 完整的过程完整的过程8251=61051+2146 6105=21462+1813 2146=18131+3331813=3335+148333=1482+37148=374+0显然显然37是是148和和37的最大公的最大公约数,也约数,也就是就是8251和和6105的的最大公约最大公约数数 例:例: 用辗转相除法求用辗转相除法求225和和135的最大公约数的最大公约数225=1351+90135
5、=901+4590=452显然显然45是是90和和45的最大公约数,也就是的最大公约数,也就是225和和135的最的最大公约数大公约数 思考思考1:从上面的两个例子中可以看出计算的规:从上面的两个例子中可以看出计算的规律是什么?律是什么? S1:用大数除以小数:用大数除以小数S2:除数变成被除数,余数变成除数:除数变成被除数,余数变成除数S3:重复:重复S1,直到余数为,直到余数为0 辗转相除法是一个反复执行直到余数等于辗转相除法是一个反复执行直到余数等于0才停才停止的步骤,这实际上是一个循环结构。止的步骤,这实际上是一个循环结构。8251=61051+2146 6105=21462+1813
6、 2146=18131+3331813=3335+148333=1482+37148=374+0m = n q r用程序框图表示出右边的过程用程序框图表示出右边的过程r=m MOD nm = nn = rr=0?是否思考:你能把辗转相除法编成一个计算机程序吗?(1)(1)、算法步骤:、算法步骤:第一步:输入两个正整数第一步:输入两个正整数m,n(mn).第二步:计算第二步:计算m除以除以n所得的余数所得的余数r.第三步:第三步:m=n,n=r.第四步:若第四步:若r0,则则m,n的最大公约数等于的最大公约数等于m; 否则,返回第二步否则,返回第二步. 第五步:输出最大公约数第五步:输出最大公约
7、数m.(2)(2)、程序框图:、程序框图:开始开始输入输入m,n r=m MOD n m=nr=0?是是否否 n=r 输出输出m结束结束(3)(3)、程序:、程序:INPUT m,nDO r=m MOD n m=n n=rLOOP UNTIL r=0PRINT mEND思考思考:你能用当型循环结构构造算法,求两个正整你能用当型循环结构构造算法,求两个正整数的最大公约数吗?写出算法步骤、程序框图和程数的最大公约数吗?写出算法步骤、程序框图和程序序。开始开始输入输入m,n求求m除以除以n的余数的余数rm=nn0?否否输出输出m结束结束是是n=rINPUT mINPUT m,n nWHILEWHIL
8、E n n0 0r=m r=m MODnMODnm=nm=nn=rn=rWENDWENDPRINT mPRINT mENDEND二、更相减损术二、更相减损术 可半者半之,不可半者,副置分母、子之数,以少可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也,以等数约之。减多,更相减损,求其等也,以等数约之。第一步:第一步:任意给定两个正整数;判断他们是否都是任意给定两个正整数;判断他们是否都是偶数。若是,则用偶数。若是,则用2约简;若不是则执行第二步。约简;若不是则执行第二步。第二步:第二步:以较大的数减去较小的数,接着把所得的以较大的数减去较小的数,接着把所得的差与较小的数比较
9、,并以大数减小数。继续这个操差与较小的数比较,并以大数减小数。继续这个操作,直到所得的数和差相等为止,则这个等数或这作,直到所得的数和差相等为止,则这个等数或这个数与约简的数的乘积就是所求的最大公约数。个数与约简的数的乘积就是所求的最大公约数。(1)、)、九章算术九章算术中的更相减损术:中的更相减损术:1、背景介绍:、背景介绍:(2)、现代数学中的更相减损术:)、现代数学中的更相减损术:2、定义:、定义: 所谓更相减损术,就是对于给定的两个所谓更相减损术,就是对于给定的两个数,用较大的数减去较小的数,然后将差和数,用较大的数减去较小的数,然后将差和较小的数构成新的一对数,再用较大的数减较小的数
10、构成新的一对数,再用较大的数减去较小的数,反复执行此步骤直到差数和较去较小的数,反复执行此步骤直到差数和较小的数相等,此时相等的两数便为原来两个小的数相等,此时相等的两数便为原来两个数的最大公约数。数的最大公约数。例例: : 用更相减损术求用更相减损术求9898与与6363的最大公约数的最大公约数. .解:由于解:由于6363不是偶数,把不是偶数,把9898和和6363以大数减小以大数减小数,并辗转相减数,并辗转相减 989863633535636335352828353528287 728287 7212121217 71 14 414147 77 7所以,所以,9898和和6363的最大公
11、约数等于的最大公约数等于7 7 3、方法:、方法:1、用更相减损术求两个正数、用更相减损术求两个正数84与与72的最大公约数的最大公约数 练习:练习:思路分析:先约简,再求思路分析:先约简,再求21与与18的最大公约数的最大公约数,然后乘以两次约简的质因数然后乘以两次约简的质因数4。2、求、求324、243、135这三个数的最大公约数。这三个数的最大公约数。思路分析:求三个数的最大公约数可以先求出两个思路分析:求三个数的最大公约数可以先求出两个数的最大公约数,第三个数与前两个数的最大公约数的最大公约数,第三个数与前两个数的最大公约数的最大公约数即为所求。数的最大公约数即为所求。2、求、求324
12、、243、135这三个数的最大公约数这三个数的最大公约数.27135243324.2713581, 022754,2715481,54181135.812433240381243811243324的最大公约数为、所以,三个数的最大公约数为与则又的最大公约数为与则2、求、求324、243、135这三个数的最大公约数这三个数的最大公约数.27135243324.2713581,272754,275481,5481135.81243324,8181162,16281243,81243324最大公约数为、所以,三个数的最大公约数为与则的最大公约数为与则(1)、算法步骤、算法步骤第一步:输入两个正整数第
13、一步:输入两个正整数m,n(mn);第二步:若第二步:若m不等于不等于n ,则执行第三步;否则则执行第三步;否则转到第五步;转到第五步;第三步:把第三步:把m-n的差赋予的差赋予r;第四步:如果第四步:如果nr, 那么把那么把n赋给赋给m,把把r赋给赋给n;否则把否则把r赋给赋给m,执行第二步;,执行第二步;第五步:输出最大公约数第五步:输出最大公约数n.*思考:你能根据更相减损术设计程序,求两个正整数的最大公约数吗?(2)(2)、程序框图、程序框图是是否否是是开始开始输入输入m,nmn?否否 输出输出n结束结束 n=rm=nr=m-nrn?m=r(3)(3)、程序、程序INPUT “m,n=
14、;m,nWHILE mn r=m-n IF nr THEN m=n n=r ELSE m=r END IFWENDPRINT nEND比较辗转相除法与更相减损术的区别比较辗转相除法与更相减损术的区别(1 1)都是求最大公约数的方法,计算上辗转相除)都是求最大公约数的方法,计算上辗转相除法以除法为主,更相减损术以减法为主,计算次数法以除法为主,更相减损术以减法为主,计算次数上辗转相除法计算次数相对较少,特别当两个数字上辗转相除法计算次数相对较少,特别当两个数字大小区别较大时计算次数的区别较明显。大小区别较大时计算次数的区别较明显。(2 2)从结果体现形式来看,辗转相除法体现结果)从结果体现形式来
15、看,辗转相除法体现结果是以相除余数为是以相除余数为0 0则得到,而更相减损术则以减数与则得到,而更相减损术则以减数与差相等而得到。差相等而得到。小结小结1、求两个数的最大公约数的两种方法分别是、求两个数的最大公约数的两种方法分别是( )和()和( )。)。2、两个数、两个数21672,8127的最大公约数是的最大公约数是 ( )A、2709 B、2606 C、2703 D、2706怎样求多项式怎样求多项式f(x)=xf(x)=x5 5+x+x4 4+x+x3 3+x+x2 2+x+1+x+1当当x=5x=5时的值呢?时的值呢?计算多项式计算多项式() =当当x = 5的值的值算法算法1:因为因
16、为() =所以所以(5)=55555=3125625125255= 3906算法算法2:(5)=55555=5(5555 ) =5(5(555 ) ) =5(5(5(5+5 +) + ) + ) +=5(5(5(5 (5 +) + )+)+) +算法算法1:因为因为() =所以所以(5)=55555=3125625125255= 3906算法算法2:(5)=55555=5(5555 ) =5(5(555 ) ) =5(5(5(5+5 +) + ) + ) +=5(5(5(5 (5 +) + )+)+) +共做了共做了1+2+3+4=10次乘法运算,次乘法运算,5次加法运算。次加法运算。共做了共
17、做了4次乘法运算,次乘法运算,5次加法运算。次加法运算。数书九章数书九章秦九韶算法秦九韶算法0111)(axaxaxaxfnnnn设设)(xf是一个是一个n 次的多项式次的多项式对该多项式按下面的方式进行改写:对该多项式按下面的方式进行改写:0111)(axaxaxaxfnnnn01211)(axaxaxannnn012312)(axaxaxaxannnn0121)(axaxaxaxannn这是怎样的一种改写方式?最后的结果是什么?0121)()(axaxaxaxaxfnnn要求多项式的值,应该先算最内层的一次多项式的值,即要求多项式的值,应该先算最内层的一次多项式的值,即11nnaxav然后
18、,由内到外逐层计算一次多项式的值,即然后,由内到外逐层计算一次多项式的值,即212naxvv323naxvv01axvvnn最后的一最后的一项是什么项是什么?这种将求一个这种将求一个n次多项式次多项式f(x)的值转化成求的值转化成求n个一个一次多项式的值的方法,称为次多项式的值的方法,称为秦九韶算法秦九韶算法。算法步骤算法步骤:第一步:输入多项式次数第一步:输入多项式次数n、最高次项的系数、最高次项的系数an和和x的值的值.第二步:将第二步:将v的值初始化为的值初始化为an,将,将i的值初始化为的值初始化为n-1.第三步:输入第三步:输入i次项的系数次项的系数ai第四步:第四步:v=vx+ai
19、,i=i-1.第五步:判断第五步:判断i是否小于或等于是否小于或等于0,若是,则返回第,若是,则返回第三步;否则,输出多项式的值三步;否则,输出多项式的值v。程序框图:程序框图:这是一个在这是一个在秦九韶算法秦九韶算法中反复执行的步骤,因中反复执行的步骤,因此可用循环结构来实现此可用循环结构来实现。 ),(nkaxvvavknkkn2110输入输入ai开始开始输入输入n,an,xi 0?输出输出v结束结束v=vx+aii=i-1YNi=n-1V=an输入输入ai开始开始输入输入n,an,xi 0?输出输出v结束结束v=vx+aii=i-1YNi=n-1V=anINPUT n=;nINPUT a
20、n=;aINPUT x=;xv=ai=n-1WHILE i=0 PRINT i=;i INPUT ai=;a v=v*x+a i=i-1WENDPRINT vEND程序程序特点:特点:通过一次式的反复计算,逐步得出高次多通过一次式的反复计算,逐步得出高次多项式的值,对于一个项式的值,对于一个n次多项式,只需做次多项式,只需做n次乘次乘法和法和n次加法即可。次加法即可。例例1:用秦九韶算法求多项式用秦九韶算法求多项式 f(x)=2x5-5x4-4x3+3x2-6x+7当当x=5时的值时的值.解法一解法一:首先将原多项式改写成如下形式首先将原多项式改写成如下形式 : f(x)=(2x-5)x-4)
21、x+3)x-6)x+7v0=2 v1=v0 x-5=25-5=5v2=v1x-4=55-4=21v3=v2x+3=215+3=108v4=v3x-6=1085-6=534v5=v4x+7=5345+7=2677所以所以,当当x=5时时,多多项式的值是项式的值是2677.然后由内向外逐层计算一次多项式的值然后由内向外逐层计算一次多项式的值,即即2 -5 -4 3 -6 7x=5105252110510854053426702677所以所以,当当x=5时时,多项式的值是多项式的值是2677.原多项式原多项式的系数的系数多项式多项式的值的值.例例1:用秦九韶算法求多项式用秦九韶算法求多项式 f(x)
22、=2x5-5x4-4x3+3x2-6x+7当当x=5时的值时的值.解法二解法二:列表列表22 -5 0 -4 3 -6 0 x=5105252512512160560830403034所以所以,当当x=5时时,多项式的值是多项式的值是15170.练一练练一练:用秦九韶算法求多项式用秦九韶算法求多项式 f(x)=2x6-5x5-4x3+3x2-6x当当x=5时的值时的值.解解:原多项式先化为原多项式先化为: f(x)=2x6-5x5 +0 x4-4x3+3x2-6x+0列表列表21517015170 注意注意:n次多项式有次多项式有n+1项项,因此缺少哪一项因此缺少哪一项应将其系数补应将其系数补
23、0.例例2 已知一个五次多项式为已知一个五次多项式为8 . 07 . 16 . 25 . 324)(2345xxxxxxf用秦九韶算法求这个多项式当用秦九韶算法求这个多项式当x = 5的值。的值。解:解:将多项式变形:将多项式变形:8 . 0)7 . 1)6 . 2)5 . 3)24()(xxxxxxf按由里到外的顺序,依此计算一次多项式当按由里到外的顺序,依此计算一次多项式当x = 5时的值:时的值:222541v40v5 .1135 . 35222v9 .5646 . 255 .1133v2 .28267 . 159 .5644v2 .141308 . 052 .28265v所以,当所以,
24、当x = 5时,多项式的值等于时,多项式的值等于14130.2你从中看到了怎样的规律?怎么用程序框图来描述呢?程序框图:程序框图:开始输入f(x)的系数:a0,a1,a2,a3,a4a5输入x0n5?输出v结束v=vx0+a5-nn=n+1YN n=1 v=a5 ),(nkaxvvavknkkn2110这是一个在这是一个在秦九韶算法秦九韶算法中反复执行的步骤,因中反复执行的步骤,因此可用循环结构来实现此可用循环结构来实现。练习、已知多项式练习、已知多项式f(x)=x5+5x4+10 x3+10 x2+5x+1用用秦九韶算法求这个多项式当秦九韶算法求这个多项式当x=-2时的值。时的值。课堂小结:
25、课堂小结:1、秦九韶算法的方法和步骤、秦九韶算法的方法和步骤2、秦九韶算法的程序框图、秦九韶算法的程序框图 问题问题11我们常见的数字都是十进制的我们常见的数字都是十进制的, ,但是并不是生活中的每一种数字都是十进制的但是并不是生活中的每一种数字都是十进制的. .比如时间和角度的单位用六十进位制比如时间和角度的单位用六十进位制, ,电子计电子计算机用的是二进制算机用的是二进制. .那么什么是进位制那么什么是进位制? ?不同的不同的进位制之间又有什么联系呢进位制之间又有什么联系呢? ?进位制是人们为了计数和运算的方便而进位制是人们为了计数和运算的方便而约定的一种记数系统,约定满二进一约定的一种记
26、数系统,约定满二进一, ,就是二就是二进制进制; ;满十进一满十进一, ,就是十进制就是十进制; ;满十六进一满十六进一, ,就就是十六进制是十六进制; ;等等等等. . “满几进一满几进一”,就是几进制就是几进制,几进制的几进制的基数基数就是几就是几.可使用数字符号的个数称为基数可使用数字符号的个数称为基数. .基数基数都是大于都是大于1 1的整数的整数. . 如二进制可使用的数字有如二进制可使用的数字有0和和1,基数是基数是2; 十进制可使用的数字有十进制可使用的数字有0,1,2,8,9等十个等十个数字数字,基数是基数是10; 十六进制可使用的数字或符号有十六进制可使用的数字或符号有09等
27、等10个数字以及个数字以及AF等等6个字母个字母(规定字母规定字母AF对应对应1015),十六进制的基数是十六进制的基数是16.注意注意: :为了区分不同的进位制为了区分不同的进位制, ,常在数字常在数字的右下脚标明基数的右下脚标明基数. . 如如111001111001(2)(2)表示二进制数表示二进制数,34,34(5)(5)表示表示5 5进制数进制数. .十进制数一般不标注基数十进制数一般不标注基数.问题问题2十进制数十进制数3721中的中的3表示表示3个千个千,7表示表示7个百个百,2表示表示2个十个十,1表示表示1个一个一,从而它可以写成从而它可以写成下面的形式下面的形式:3721=
28、3103+7102+2101+1100.想一想二进制数想一想二进制数1011(2)可以类似的写成什可以类似的写成什么形式么形式?1011(2)=123+022+121+120.同理同理:3421(5)=353+452+251+150.C7A16(16)=12164+7163+10162+1161+6160一般地一般地,若若k是一个大于是一个大于1的整数的整数,那么以那么以k为为基数的基数的k进制数可以表示为一串数字连写在一进制数可以表示为一串数字连写在一起的形式起的形式anan-1a1a0(k) (0ank,0an-1,a1,a0n?否否是是输出输出b结束结束INPUT a,k,ni=1b=0
29、DOb=b+t*k(i-1)i=i+1LOOP UNTIL inPRINT bENDt=a MOD 10a=a10t=a MOD 10例例3:把把89化为二进制的数化为二进制的数.分析分析:把把89化为二进制的数化为二进制的数,需想办法将需想办法将89先写成如下形式先写成如下形式89=an2n+an-12n-1+a121+a020 .89=64+16+8+1=126+025+124 +123+022+021+120 =1011001(2).但如果数太大但如果数太大,我们是无法这样凑出来的我们是无法这样凑出来的,怎么办怎么办?89=442+1, 44=222+0, 22=112+0, 11=52+1, 5=22+1, 2=12+0, 1=02+1, 89=442+1, 44=222+0, 22=112+0, 11=52+1, 5=22+1, 89=442+1, =(222+0)2+1 =(112+0)2+0)2+1 =(52+1)2+0)2+0)2+1 =(22+1)2+1)2+0) 2+0)2+1 =(12)+0)2+1)2+1)2+0) 2+0)2+1=126+025+124+123+022+021+120=1011001(2).可以用可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 紫外-可见吸收光谱法(UV-Vis)
- 大学生入职职业规划
- 大班活动教案保护大自然
- 医疗单位安全培训
- 儿童骨折的护理查房
- 三位数乘两位数能力测试模拟题大全附答案
- 《吉林大学采购管理》课件
- 大气压强实践活动
- 《入侵检测技术培训》课件
- 微课人力资源部门所承担的主要职责及发展趋势财经管理人力
- 新能源基础知识入门
- 2024年插花花艺师理论知识考试题库(含答案)
- 软硬件集成方案
- 自身免疫性脑炎护理
- 放射科院感管理制度
- 2024年基因编辑技术的伦理问题
- 材料力学课程导学与考研指导
- 腮腺及面神经解剖
- 统编本道德与法治小学四年级上册第五、第六单元集体备课(各一套)
- 生鲜食品配送部各项管理制度
- GB/T 43232-2023紧固件轴向应力超声测量方法
评论
0/150
提交评论