算法案例11.ppt
《算法案例11.ppt》由会员分享,可在线阅读,更多相关《算法案例11.ppt(33页珍藏版)》请在三一办公上搜索。
1、1.3算法案例,情境创设,韩信是秦末汉初的著名军事家.据说有一次汉高祖刘邦在卫士的簇拥下来到练兵场,刘邦问韩信有什么方法,不要逐个报数,就能知道场上的士兵的人数,韩信先令士兵排成3列纵队,结果有2人多余,接着下令排成5列纵队,结果又多出3人,随后他又下令改为7列纵队,这次又剩下2人无法成整行.在场的人都哈哈大笑,以为韩信不能清点出准确的人数,不料笑声刚落,韩信高声报告共有士兵2333人.众人听了一楞,不知道韩信用什么方法这么快就能得到正确的结果的.今天,我们将以这些古典案例的思想,设计出适宜计算机的运行程序,提高我们对基本算法结构和算法语句在实际中的运用能力.,探究一,辗转相除法,思考1:在小
2、学中我们是如何求出两个正整数的最大公约数的呢?,算法案例之求最大公约数,求以下几组正整数的最大公约数。(注:若整数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:当两个数的公有质因数较大时,我
3、们怎样去求两个数的最大公约数呢?辗转相除法:用于求两个正整数的最大公约数的一种算法,是由欧几里得在公元前300年左右首先提出的,因而又叫做欧几里得算法.定义:所谓的辗转相除法,就是对于给定的两个数,用较大的数除以较小的数,若余数不为零,则将余数和较小的数构成新的数对,继续上面的除法,直到大数被小数除尽,则这是较小的数就是原来两个数的最大公约数.,定理:已知m,n,r为正整数,若m=nq+r(0rn)(即r=m MOD n),则(m,n)=(n,r)。,辗转相除法的理论基础:,分析:m=nq+r r=m-nq,例1、求8251和6105的最大公约数。,148=37 4,=37,8251=6105
4、1+2146,(8251,6105)=(6105,2146),6105=2146 2+1813,=(2146,1813),2146=1813 1+333,=(1813,333),1813=333 5+148,=(333,148),333=148 2+37,=(148,37),解:,练习:用辗转相除法求下列两数的最大公约数:(1)(225,135)(2)(98,196)(3)(72,168)(4)(153,119),45,98,24,17,辗转相除法求两个数的最大公约数,其算法可以描述如下:,辗转相除法是一个反复执行直到余数等于0停止的步骤,这实际上是一个循环结构,思考3:辗转相除直到何时结束?
5、主要运用的是哪种算法结构?,如此循环,直到得到结果。,输入两个正整数m和n;,求余数r:计算m除以n,将所得余数存放到变量r中;,更新被除数和余数:m=n,n=r。,判断余数r是否为0:若余数为0则输出结果,否则转向第步继续循环执行。,利用辗转相除法求最大公约数的步骤如下:,第一步:用较大的数m除以较小的数n得到一个商q0和一个余数r0;(m=nq0+r0)第二步:若r00,则n为m,n的最大公约数;若r00,则用除数n除以余数r0得到一个商q1和一个余数r1;(n=r0q1+r1)第三步:若r10,则r0为m,n的最大公约数;若r10,则用除数r0除以余数r1得到一个商q2和一个余数r2;(
6、r0=r1q2+r2)依次计算直至rn0,此时所得到的rn-1 即为所求的最大公约数。,程序:INPUT“m,n=”;m,nDO r=m MOD nm=nn=rLOOP UNTIL r=0PRINT mEND,你能用当型循环结构来设计算法吗?,INPUT m,nr=1WHILE r0 r=m MOD n m=n n=rWENDPRINT mEND,思考4:你能根据辗转相除法的算法步骤画出它的程序框图以及相应的程序语句吗?,探究二,更相减损术,“可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也,以等数约之。”,同理:a,b,c为正整数,若a-b=c,则(a,b)=(b,c)。
7、,“更相减损术”(也是求两个正整数的最大公约数的算法)步骤:,第一步:任意给定两个正整数;判断他们是否都是偶数。若是,则用2约简;若不是则执行第二步。,第二步:以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止,则这个等数就是所求的最大公约数。,例2、用更相减损术求98与63的最大公约数(自己按照步骤求解),解:由于63不是偶数,把98和63以大数减小数,并辗转相减。,=7,所以,98和63的最大公约数等于7。,(98,63)=(63,35),98-63=35,63-35=28,=(35,28),35-28=7,=(28,7),28-7
8、=21,=(21,7),21-7=14,=(14,7),14-7=7,=(7,7),练习:用更相减损术求下列两数的最大公约数:(1)(225,135)(2)(98,196)(3)(72,168)(4)(153,119),45,98,24,17,思考:更相减损直到何时结束?运用的是哪种算法结构?,更相减损是一个反复执行直到减数等于差时停止的步骤,这实际也是一个循环结构,讨论:你能根据更相减损术的算法步骤画出其程序框图并写出程序语句吗?,开始,输入:m,n,输出:m,结束,mn?,m=m-n,N,Y,Mn?,n=n-m,Y,N,INPUT m,nWHILE mn IF mn THEN m=m-n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 案例 11
链接地址:https://www.31ppt.com/p-2840502.html