版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章算法初步
1.3算法案例例:求下面两个正整数的最大公约数:(1)求25和35的最大公约数(2)求49和63的最大公约数25(1)5535749(2)77639所以,25和35的最大公约数为5所以,49和63的最大公约数为7思考:除了用这种方法外还有没有其它方法?例:如何算出8251和6105的最大公约数?辗转相除法与更相减损术一、辗转相除法(欧几里得算法)1、定义:所谓辗转相除法,就是对于给定的两个数,用较大的数除以较小的数。若余数不为零,则将余数和较小的数构成新的一对数,继续上面的除法,直到大数被小数除尽,则这时较小的数就是原来两个数的最大公约数。
2、步骤(以求8251和6105的最大公约数的过程为例)第一步用两数中较大的数除以较小的数,求得商和余数8251=6105×1+2146结论:8251和6105的公约数就是6105和2146的公约数,求8251和6105的最大公约数,只要求出6105和2146的公约数就可以了。为什么呢?第二步对6105和2146重复第一步的做法
6105=2146×2+1813
同理6105和2146的最大公约数也是2146和1813的最大公约数。
完整的过程8251=6105×1+21466105=2146×2+18132146=1813×1+3331813=333×5+148333=148×2+37148=37×4+0例:用辗转相除法求225和135的最大公约数225=135×1+90135=90×1+4590=45×2显然37是148和37的最大公约数,也就是8251和6105的最大公约数显然45是90和45的最大公约数,也就是225和135的最大公约数思考:从上面的两个例子中可以看出计算的规律是什么?S1:用大数除以小数S2:除数变成被除数,余数变成除数S3:重复S1,直到余数为0
辗转相除法是一个反复执行直到余数等于0才停止的步骤,这实际上是一个循环结构。m=n×q+r用程序框图表示出右边的过程r=mMODnm=nn=rr=0?是否8251=6105×1+21466105=2146×2+18132146=1813×1+3331813=333×5+148333=148×2+37148=37×4+0思考:辗转相除法中的关键步骤是哪种逻辑结构?
程序框图:开始输入m,n
r=mMODn
m=nr=0?是否
n=r输出m结束思考:你能把辗转相除法编成一个计算机程序吗?程序:INPUT“m,n=”;m,nDOr=mMODnm=nn=rLOOPUNTILr=0PRINTmEND1.定义:所谓更相减损术,就是对于给定的两个数,用较大的数减去较小的数,然后将差和较小的数构成新的一对数,再用较大的数减去较小的数,反复执行此步骤直到差数和较小的数相等,此时相等的两数便为原来两个数的最大公约数。二、更相减损术2、方法:例:用更相减损术求98与63的最大公约数.解:由于63不是偶数,把98和63以大数减小数,并辗转相减98-63=35
63-35=28
35-28=7
28-7=2121-7=1414-7=7所以,98和63的最大公约数等于7
INPUTm,nIFm<nTHENa=mm=nn=aENDIFK=0WHILEmMOD2=0ANDnMOD2=0m=m/2n=n/2k=k+1WENDd=m-nWHILEd<>n
IFd>nTHENm=d
ELSEm=nn=d
ENDIFd=m-nWENDd=2k*dPRINTdEND思考:你能根据更相减损术设计程序,求两个正整数的最大公约数吗?(1)设计求多项式当x=5时的值的算法,并写出程序。(2)有没有更高效的算法?能否探求更好的算法,来解决任意多项式的求解问题?三、秦九韶算法引导学生把多项式变形为:思考:从内到外,如果把每一个括号都看成一个常数,那么变形后的式子中有哪些“一次式”?x的系数依次是什么?(3)若若将将x的值值代代入入变变形形后后的的式式子子中中,,那那么么求将变变形形前前x的系系数数乘乘以以x的值值,,加加上上变变形形前前的的第第2个系系数数,,得得到到一一个个新新的的系系数数;;将将此此系系数数继继续续乘乘以以x的值值,,再再加加上上变变形形前前的的第第3个系系数数,,又又得得到到一一个个新新的的系系数数;;继继续续对对新新系系数数做做上上面面的的变变换换,,直直到到与与变变形形前前的的最最后后一一个个系系数数相相加加,,得得到到一一个个新新的的系系数数为为止止。。这这个个系系数数即即为为所所求求多多项项式式的的值值。。这这种种算算法法即即是是““秦秦九九韶韶算算法法””(4)用用秦秦九九韶韶算算法法求求多多项项式式的的值值,,与与多多项项式式组组成成有有直直接接关关系系吗吗??用用秦秦九九韶韶算算法法计计算算上上述述多多项项式式的的值值,,需需要要多多少少次次乘乘法法运运算算和和多多少少次次加加法法运运算算?计算只与多项式的系数有关,
《数书书九九章章》————秦九九韶韶算算法法设是一个n次的多项式对该该多多项项式式按按下下面面的的方方式式进进行行改改写写::思考考::当当知知道道了了x的的值值后后该该如如何何求求多多项项式式的的值值??这是是怎怎样样的的一一种种改改写写方方式式??最最后后的的结结果果是是什什么么??要求求多多项项式式的的值值,,应应该该先先算算最最内内层层的的一一次次多多项项式式的的值值,,即即然后后,,由由内内到到外外逐逐层层计计算算一一次次多多项项式式的的值值,,即即最后的一一项是什什么?这种将求求一个n次多项式式f(x)的值转化化成求n个一次多多项式的的值的方方法,称称为秦九韶算算法。思考:在在求多项项式的值值上,这这是怎样样的一个个转化??程序框图图:这是一个个在秦九韶算算法中反反复执行行的步骤骤,因此此可用循循环结构构来实现现。输入ai开始输入n,an,xi>=0?输出v结束v=vx+aii=i-1YNi=n-1V=an秦九韶算算法的特特点:通过一次次式的反反复计算算,逐步步得出高高次多项项式的值值,对于于一个n次多项式式,只需需做n次乘法和和n次加法即即可。程序:INPUT““n=”;nINPUT““an=“;aINPUT““x=““;xv=ai=n-1WHILEi>=0PRINT““i=““;iINPUT““ai=“;av=v*x+ai=i-1WENDPRINTvEND四、进位位制1、什么是是进位制制?进位制是是人们为为了计数数和运算算方便而而约定的的记数系系统。进位制是是一种记记数方式式,用有有限的数数字在不不同的位位置表示示不同的的数值。。可使用用数字符符号的个个数称为为基数,,基数为为n,即可称称n进位制,,简称n进制。比如:满二进一一,就是是二进制制;满十进一一,就是是十进制制;满十二进进一,就就是十二二进制;;满六十进进一,就就是六十十进制基数:“满几进进一”就就是几进进制,几几进制的的基数就就是几.2、最常见见的进位位制是什什么?除除此之外外还有哪哪些常见见的进位位制?请请举例说说明.最常见的的进位制制应该是是我们数数学中的的十进制制,比如一般般的数值值计算,,但是并并不是生生活中的的每一种种数字都都是十进进制的.古人有半斤八两两之说,就就是十六六进制与与十进制制的转换换.比如时间间和角度度的单位位用六十十进位制制,计算“一一打”数数值时是是12进制的。。电子计算算机用的的是二进进制。。式中1处在百位位,第一一个3所在十位位,第二二个3所在个位位,5和9分别处在在十分位位和百分分位。十十进制数数是逢十十进一的的。我们最常用最最熟悉的就是是十进制数,,它的数值部部分是十个不不同的数字符符号0,1,2,3,4,5,6,7,8,9来表示的。十进制:例如133.59,它可用一个个多项式来表表示:133.59=1*102+3*101+3*100+5*10-1+9*10-2实际上,十进进制数只是计计数法中的一一种,但它不不是唯一记数法。。除了十进制制数,生产生生活中还会遇遇到非十进制的记数制制。如时间::60秒为1分,60分为1小时,它是六十进制的的。两根筷子子一双,两只只手套为一副副,它们是二进制的。。其它进制:二进制、七进进制、八进制制、十二进制制、六十进制制……二进制只有0和1两个数字,七七进制用0~6七个数字十六进制有0~9十个数字及ABCDEF六个字母.为了区分不同同的进位制,,常在数的右右下角标明基基数,十进制制一般不标注注基数.例如十进制的的133.59,写成133.59(10)七进制的13,写成13(7);二进制的10,写成10(2)一般地,若k是一个大于1的整数,那么以k为基数的k进制可以表示为一串数字连写在一起的形式:十进制的构成成十进制由两个个部分构成例如:3721其它进位制的的数又是如何何的呢?第一、它有0~9十个数字;第二、它有“数位”,即从右往左为个位、十位、百位、千位等等。(用10个数字来记数数,称基数为为10)表示有:1个1,2个十,7个百即7个10的平方,3个千即3个10的立方十进制:“满十进一”其它进制数化化成十进制数数公式二进制二进制是用0、1两个数字来描描述的.如11001二进制的表示示方法区分的写法::11001(2)或者(11001)2八进制呢?如7342(8)k进制呢?anan-1an-2…a1(k)?二进制与十进进制的转换1、二进制数转转化为十进制制数例1:将二进制数数110011(2)化成十进制数数。解:根据进位制的的定义可知所以,110011(2)=51.例2、设计一个算算法,将k进制数a(共有n位)转换为十进制制数b。(1)算法步骤:第一步,输入入a,k和n的值;第二步,将b的值初始化为为0,i的值初始化为为1;第三步,b=b+ai*ki-1,i=i+1第四步,判断断i>n是否成立.若是,则执行第五步步,否则,返回第三步;;第五步,输出出b的值.(2)程序框图:开始输入a,k,nb=0i=1把a的右数第i位数字赋给tb=b+t*ki-1i=i+1i>n?否是输出b结束(3)程序:INPUT““a,k,n=”;a,k,nb=0i=1t=aMOD10DOb=b+t*k^(i-1)a=a\10t=aMOD10i=i+1LOOPUNTILi>nPRINTbEND**上面的程程序如采用get函数,可简化为:INPUTa,k,ni=1b=0WHILEi<=nt=GETa[i]b=t*k^(i-1)+bi=i+1WENDPRINTbEND备注:GET函数用于取出出a的右数第i位数方法:除2取余法,即用用2连续去除89或所得的商,,然后取余数数。例、把89化为二进制数数解:根据“逢二进进一”的原则则,有89=2×44+1=2×(2×22+0)+1=2×(2××(2×11+0)+0)+1=2×(2××(2×(2×5+1)+0)+0)+15=2×2+1=2×(2×(2×(2×(22+1)+
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中南大学《计算机控制技术及应用》2022-2023学年期末试卷
- 中南大学《环境认知与建构设计》2021-2022学年第一学期期末试卷
- 高数数学(下)学习通超星期末考试答案章节答案2024年
- 中国劳动关系学院《政治哲学》2021-2022学年第一学期期末试卷
- javaScript+jQuery开发实战学习通超星期末考试答案章节答案2024年
- 工程创造学学习通超星期末考试答案章节答案2024年
- 《呼联检产品介绍》课件
- 养猪企业培训
- 中国劳动关系学院《酒水服务》2022-2023学年第一学期期末试卷
- 电脑组成教学
- 高考英语单词3500记忆短文40篇
- 2024年 贵州茅台酒股份有限公司招聘笔试参考题库含答案解析
- 河上建坝纠纷可行性方案
- 施工人材机配置方案3
- 小学低年级自主识字的教学策略
- 第五单元学雷锋在行动(教案)全国通用五年级下册综合实践活动
- 服装店人员不稳定分析报告
- GB 37219-2023充气式游乐设施安全规范
- NB-T 47013.7-2012(JB-T 4730.7) 4730.7 承压设备无损检测 第7部分:目视检测
- 《梯形的认识》(课件)-四年级上册数学人教版
- 肝吸虫护理查房课件
评论
0/150
提交评论