版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一章第一章 算法初步算法初步 1.3 1.3 算法案例算法案例例:求下面两个正整数的最大公约数:例:求下面两个正整数的最大公约数:(1)求)求25和和35的最大公约数的最大公约数(2)求)求49和和63的最大公约数的最大公约数25(1) 5535749(2) 77639所以,所以,25和和35的最大公的最大公约数为约数为5所以,所以,49和和63的最大公的最大公约数为约数为7思考:除了用这种方法外还有没有其它方法?思考:除了用这种方法外还有没有其它方法?例:如何算出例:如何算出8251和和6105的最大公约数?的最大公约数?辗转相除法与更相减损术一、辗转相除法(欧几里得算法)一、辗转相除法(
2、欧几里得算法)1、定义:、定义:所谓辗转相除法,就是对于给定的两个数,用较大的数除以所谓辗转相除法,就是对于给定的两个数,用较大的数除以较小的数。若余数不为零,则将余数和较小的数构成新的一对数,继续较小的数。若余数不为零,则将余数和较小的数构成新的一对数,继续上面的除法,直到大数被小数除尽,则这时较小的数就是原来两个数的上面的除法,直到大数被小数除尽,则这时较小的数就是原来两个数的最大公约数。最大公约数。 2、步骤、步骤(以求(以求8251和和6105的最大公约数的过程为例)的最大公约数的过程为例)第一步第一步 用两数中较大的数除以较小的数,求得商和余数用两数中较大的数除以较小的数,求得商和余
3、数8251=61051+2146结论:结论: 8251和和6105的公约数就是的公约数就是6105和和2146的公约数,求的公约数,求8251和和6105的最大公约数,的最大公约数,只要求出只要求出6105和和2146的公约数就可以了。的公约数就可以了。第二步第二步 对对6105和和2146重复第一步的做法重复第一步的做法6105=21462+1813同理同理6105和和2146的最大公约数也是的最大公约数也是2146和和1813的最大公约数。的最大公约数。 完整的过程完整的过程8251=61051+2146 6105=21462+1813 2146=18131+3331813=3335+14
4、8333=1482+37148=374+0例:例: 用辗转相除法求用辗转相除法求225和和135的最大公约数的最大公约数225=1351+90135=901+4590=452显然显然37是是148和和37的最大的最大公约数,也就是公约数,也就是8251和和6105的最大公约数的最大公约数 显然显然45是是90和和45的最大公约数,的最大公约数,也就是也就是225和和135的最大公约数的最大公约数 思考:从上面的两个例子中可思考:从上面的两个例子中可以看出计算的规律是什么?以看出计算的规律是什么? S1:用大数除以小数:用大数除以小数S2:除数变成被除数,余数:除数变成被除数,余数变成除数变成除
5、数S3:重复:重复S1,直到余数为,直到余数为0 辗转相除法是一个反复执行直到余数等于辗转相除法是一个反复执行直到余数等于0才停才停止的步骤,这实际上是一个循环结构。止的步骤,这实际上是一个循环结构。m = n q r用程序框图表示出右边的过程用程序框图表示出右边的过程r=m MOD nm = nn = rr=0?是否8251=61051+2146 6105=21462+1813 2146=18131+3331813=3335+148333=1482+37148=374+0思考:辗转相除法中的关键步骤是哪种逻辑结构? 程序框图:程序框图:开始开始输入输入m,n r=m MOD n m=nr=0
6、?是是否否 n=r 输出输出m结束结束思考:你能把辗转相除法编成一个计算机程序吗?程序:程序:INPUT “m,n=”;m,nDO r=m MOD n m=n n=rLOOP UNTIL r=0PRINT mEND1.定义:定义:所谓更相减损术,就是对于给定的两个数,用较大的数减去较所谓更相减损术,就是对于给定的两个数,用较大的数减去较小的数,然后将差和较小的数构成新的一对数,再用较大的数减去较小的数,然后将差和较小的数构成新的一对数,再用较大的数减去较小的数,反复执行此步骤直到差数和较小的数相等,此时相等的两数小的数,反复执行此步骤直到差数和较小的数相等,此时相等的两数便为原来两个数的最大公
7、约数。便为原来两个数的最大公约数。二、更相减损术二、更相减损术2、方法:、方法:例例: : 用更相减损术求用更相减损术求9898与与6363的最大公约数的最大公约数. .解:由于解:由于6363不是偶数,把不是偶数,把9898和和6363以大数减小数,并辗转相减以大数减小数,并辗转相减 989863633535636335352828353528287 728287 7212121217 7141414147 77 7所以,所以,9898和和6363的最大公约数等于的最大公约数等于7 7 INPUT m, nIF mn THEN a=m m=n n=aEND IFK=0WHILE m MOD
8、2=0 AND n MOD 2=0 m=m/2 n=n/2 k=k+1WENDd=m-nWHILE dn IF dn THEN m=d ELSE m=n n=d END IF d=m-nWENDd=2 k*dPRINT dEND思考:你能根据更相减损术设计程序,求两个正整数的最大公约数吗?(1)设计求多项式)设计求多项式763452)(2345xxxxxxf当当x=5时的值的算法,并写出程序。时的值的算法,并写出程序。(2)有没有更高效的算法?能否探求更好的算法,来解决任意多项式的)有没有更高效的算法?能否探求更好的算法,来解决任意多项式的求解问题?求解问题?引导学生把多项式变形为:引导学生把
9、多项式变形为:7)6) 3)4)52(763452)(2345xxxxxxxxxxxf思考:从内到外,如果把每一个括号都看成一个常数,那么变形思考:从内到外,如果把每一个括号都看成一个常数,那么变形后的式子中有哪些后的式子中有哪些“一次式一次式”?x的系数依次是什么?的系数依次是什么?(3)若将)若将x的值代入变形后的式子中,那么求值的计算过程是怎样的值代入变形后的式子中,那么求值的计算过程是怎样的?的? 将变形前将变形前x的系数乘以的系数乘以x的值,加上变形前的第的值,加上变形前的第2个系数,得到一个新个系数,得到一个新的系数;将此系数继续乘以的系数;将此系数继续乘以x的值,再加上变形前的第
10、的值,再加上变形前的第3个系数,又得到一个系数,又得到一个新的系数;继续对新系数做上面的变换,直到与变形前的最后一个系数个新的系数;继续对新系数做上面的变换,直到与变形前的最后一个系数相加,得到一个新的系数为止。这个系数即为所求多项式的值。这种算法相加,得到一个新的系数为止。这个系数即为所求多项式的值。这种算法即是即是“秦九韶算法秦九韶算法” (4)用秦九韶算法求多项式的值,与多项式组成有直接关)用秦九韶算法求多项式的值,与多项式组成有直接关系吗?用秦九韶算法计算上述多项式的值,需要多少次乘系吗?用秦九韶算法计算上述多项式的值,需要多少次乘法运算和多少次加法运算法运算和多少次加法运算? 数书九
11、章数书九章秦九韶算法秦九韶算法0111)(axaxaxaxfnnnn设设)(xf是一个是一个n 次的多项式次的多项式对该多项式按下面的方式进行改写:对该多项式按下面的方式进行改写:0111)(axaxaxaxfnnnn01211)(axaxaxannnn012312)(axaxaxaxannnn0121)(axaxaxaxannn这是怎样的一种改写方式?最后的结果是什么?0121)()(axaxaxaxaxfnnn要求多项式的值,应该先算最内层的一次多项式的值,即要求多项式的值,应该先算最内层的一次多项式的值,即11nnaxav然后,由内到外逐层计算一次多项式的值,即然后,由内到外逐层计算一次
12、多项式的值,即212naxvv323naxvv01axvvnn最后的一最后的一项是什么?项是什么?这种将求一个这种将求一个n次多项式次多项式f(x)的值转化成求的值转化成求n个一个一次多项式的值的方法,称为次多项式的值的方法,称为秦九韶算法秦九韶算法。程序框图:程序框图:这是一个在这是一个在秦九韶算法中反复执行秦九韶算法中反复执行的步骤,因此可用循环结构来实现。的步骤,因此可用循环结构来实现。输入输入ai开始开始输入输入n,an,xi=0?输出输出v结束结束v=vx+aii=i-1YNi=n-1V=an ),(nkaxvvavknkkn2110秦九韶算法的特点:秦九韶算法的特点: 通过一次式的
13、反复计算,逐步得出通过一次式的反复计算,逐步得出高次多项式的值,对于一个高次多项式的值,对于一个n次多项式,次多项式,只需做只需做n次乘法和次乘法和n次加法即可。次加法即可。程序:程序:INPUT “n=”;nINPUT “an=“;aINPUT “x=“;xv=ai=n-1WHILE i=0 PRINT “i=“;i INPUT “ai=“;a v=v*x+a i=i-1WENDPRINT vEND1 1、什么是进位制?、什么是进位制?进位制是人们为了计数和运算方便而约定的记数系统。进位制是人们为了计数和运算方便而约定的记数系统。进位制是一种记数方式,用有限的数字在不同的位进位制是一种记数方
14、式,用有限的数字在不同的位置表示不同的数值。可使用数字符号的个数称为基置表示不同的数值。可使用数字符号的个数称为基数,基数为数,基数为n n,即可称,即可称n n进位制,简称进位制,简称n n进制。进制。 比如:比如: 满二进一,就是二进制;满二进一,就是二进制; 满十进一,就是十进制;满十进一,就是十进制; 满十二进一,就是十二进制;满十二进一,就是十二进制; 满六十进一,就是六十进制满六十进一,就是六十进制基数:基数:“满几进一满几进一”就是几进制,几进制的基数就是几就是几进制,几进制的基数就是几. .2 2、最常见的进位制是什么?除此之外还有哪些常见、最常见的进位制是什么?除此之外还有哪
15、些常见的进位制?请举例说明的进位制?请举例说明 最常见的进位制应该是我们数学中的十进制最常见的进位制应该是我们数学中的十进制, ,比如比如一般的数值计算,但是并不是生活中的每一种数一般的数值计算,但是并不是生活中的每一种数字都是十进制的字都是十进制的. . 古人有古人有半斤八两半斤八两之说,就是十六进制与十进制的之说,就是十六进制与十进制的转换转换. . 比如时间和角度的单位用六十进位制比如时间和角度的单位用六十进位制, , 计算计算“一一打打”数值时是数值时是1212进制的。进制的。 电子计算机用的是二进制电子计算机用的是二进制 。 式中式中1 1处在百位,第一个处在百位,第一个3 3所在十
16、位,第二个所在十位,第二个3 3所在所在个位,个位,5 5和和9 9分别处在十分位和百分位。十进制数是逢分别处在十分位和百分位。十进制数是逢十进一的。十进一的。 我们最常用最熟悉的就是十进制数,它的数值我们最常用最熟悉的就是十进制数,它的数值部分是十个不同的数字符号部分是十个不同的数字符号0 0,1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9来表示的。来表示的。十进制:十进制:例如例如133.59133.59,它可用一个多项式来表示:,它可用一个多项式来表示:133.59=1133.59=1* *10102 2+3+3* *10101 1+3+3* *10100 0 +
17、5+5* *1010-1-1+9+9* *1010-2-2 实际上,十进制数只是计数法中的一种,但它不是实际上,十进制数只是计数法中的一种,但它不是唯一记数法。除了十进制数,生产生活中还会遇到非十唯一记数法。除了十进制数,生产生活中还会遇到非十进制的记数制。如时间:进制的记数制。如时间:6060秒为秒为1 1分,分,6060分为分为1 1小时,它小时,它是六十进制的。两根筷子一双,两只手套为一副,它们是六十进制的。两根筷子一双,两只手套为一副,它们是二进制的。是二进制的。其它进制:其它进制:二进制、七进制、八进制、十二进制、六十进制二进制、七进制、八进制、十二进制、六十进制二进制只有0和1两个
18、数字,七进制用06七个数字十六进制有09十个数字及ABCDEF六个字母. 为了区分不同的进位制,常在数的右下角标明基数,为了区分不同的进位制,常在数的右下角标明基数,十进制一般不标注基数十进制一般不标注基数. .例如十进制的例如十进制的133.59133.59,写成,写成133.59133.59(10)(10)七进制的七进制的1313,写成,写成1313(7)(7);二进制的;二进制的1010,写成,写成1010(2) (2) 一般地,若一般地,若k k是一个大于是一个大于1 1的整数,那么以的整数,那么以k k为基数的为基数的k k进制可以表示为一串数字连写在一起进制可以表示为一串数字连写在
19、一起的形式:的形式:11 0( )110(0,0, , ,).n nknnaaaaa kaa a k 十进制的构成十进制的构成十进制由两个部分构成十进制由两个部分构成例如:例如:37213721其它进位制的数又是如何的呢?其它进位制的数又是如何的呢?第一、它有第一、它有0 09 9十个数字;十个数字;第二、它有第二、它有“数位数位”,即,即从右往左从右往左为个位、十位、为个位、十位、百位、千位等等。百位、千位等等。( (用用1010个数字来记数,称基数为个数字来记数,称基数为10)10)01231011021071037213表示有:表示有:1 1个个1 1,2 2个十,个十, 7 7个百即个
20、百即7 7个个1010的平方,的平方,3 3个千即个千即3 3个个1010的立方的立方十进制:十进制:“满十进一满十进一”110( )110110(10)nnknnnna aa aakakakak其它进制数化成十进制数公式二进制二进制二进制是用二进制是用0 0、1 1两个数字来描述的如两个数字来描述的如1100111001二进制的表示方法二进制的表示方法区分的写法:区分的写法:1100111001(2 2)或者或者(11001)(11001)2 201234(2)212020212111001八进制呢?八进制呢? 如如73427342(8)(8)k k进制呢?进制呢? a an na an-1
21、n-1a an-2n-2a a1(k)1(k)?二进制与十进制的转换二进制与十进制的转换1 1、二进制数转化为十进制数、二进制数转化为十进制数例例1 1:将二进制数:将二进制数110011110011(2)(2)化成十进制数。化成十进制数。解:解:根据进位制的定义可知根据进位制的定义可知012345)2(21212020212111001112116132151所以,所以,110011110011(2 2)=51=51例例2 2、设计一个算法,将、设计一个算法,将k k进制数进制数a(a(共有共有n n位位) )转换为十进转换为十进制数制数b b。(1)(1)算法步骤算法步骤: :第一步,输入
22、第一步,输入a,ka,k和和n n的值;的值;第二步,将第二步,将b b的值初始化为的值初始化为0,i0,i的值初始化为的值初始化为1 1;第三步,第三步,b=b+ab=b+ai i* *k ki-1i-1, i=i+1, i=i+1第四步,判断第四步,判断inin是否成立是否成立. .若是若是, ,则执行第五步则执行第五步, ,否则否则, ,返回第三步;返回第三步;第五步,输出第五步,输出b b的值的值. .(2)程序框图程序框图:开始开始输入输入a,k,nb=0i=1把把a的右数第的右数第i位数字赋给位数字赋给tb=b+t*ki-1i=i+1in?否否是是输出输出b结束结束(3)程序:程序
23、:INPUT “a,k,n=”;a,k,nb=0i=1t=a MOD 10DO b=b+t*k(i-1) a=a10 t=a MOD 10 i=i+1LOOP UNTIL inPRINT bEND*上面的程序如采用上面的程序如采用get函数函数,可简化为:可简化为:INPUT a,k,nINPUT a,k,ni=1i=1b=0b=0WHILE i=nWHILE i=nt=GET ait=GET aib=tb=t* *k(i-1)+bk(i-1)+bi=i+1i=i+1WENDWENDPRINT bPRINT bENDEND备注备注:GET函数用于取出函数用于取出a的右数第的右数第i位数位数方法:除方法:除2取余法,即用取余法,即用2连续去除连续去除89
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学四年级数学三位数除以两位数同步练习训练题大全附答案
- 三年级数学三位数除以一位数综合监控练习题带答案
- 2024年度江西省国家保安员资格考试题库综合试卷A卷附答案
- 餐饮行业门面房租赁合同
- 物业管理工程验收合同
- 建筑行业劳动合同的合规性分析
- 《誰偷走了我的健康》课件
- 《常见口服降糖药物》课件
- 《企业内的人际关系》课件
- 节能课件-酒店综合节能集成技术
- 人教版四年级上册竖式计算400题及答案
- 重庆开县2023-2024学年七年级上学期期末数学检测卷(含答案)
- 血气分析结果判读及临床应用护理课件
- 智能船舶与海洋工程:物联网在船舶与海洋工程中的应用
- 高速服务区经营分析报告
- 浙江省湖州市2022-2023学年四年级上学期数学期末试卷(含答案)
- 建井施工方案
- YMO青少年数学思维28届五年级全国总决赛试卷
- 个人业绩相关信息采集表
- 过敏性紫癜课件PPT
- 大学生暑期社会实践证明模板(20篇)
评论
0/150
提交评论