- 1、本文档共39页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1;第1页/共39页;第2页/共39页;1.用两数中 的数减去 的数,再用 构成新的一对数,再用 减 ,以同样的操作一直做下去,直到所得的两数相等为止,这个数就是这两个数的最大公约数.这个方法称作“更相减损术”,用它编写的算法称作“等值算法”.;
2.古希腊求两个正整数的最大公约数的方法是 :用 除以 所得的 和 构成新的一对数,继续做上面的除法,直到大数被小数除尽,这个较小的数就是最大公约数.据此编写的算法,也称作“欧几里得算法”.;3.对于正整数m与n(mn),总能找到整数q和r(0≤rn)使得m=nq+r成立,这个除法称为带余除法.通常记r=mMODn.;第6页/共39页;
重点:算法案例的原理、算法设计及算法思想的体会.
难点:理解算法案例的内容及具体算法设计的关键步骤.;第8页/共39页;
一、弄清算法原理,掌握算法程序,经历算法设计过程,体会算法设计的关键环节,领悟算法思想.;
1.辗转相除法
(1)辗转相除的原理:
设m,n是两个整数(不妨设mn),用m除以n,若商为q1,余数为r1(0≤r1n),则m=n·q1+r1,显然若x是m和n的公约数,即x能整除m和n,则x也必然能整除r1,这样x也是n和r1的公约数,故求m和n的公约数就是求n和r1的公约数;同理,用n除以r1,得n=r1·q2+r2(0≤r2r1),故求m和n的公约数就是求r2和r1的公约数,…,依次下去,由于mnr1r2…,所以到某一步必然有ri=ri+1·qi+2,即ri恰能被ri+1整除,这时ri+1是ri和ri+1的最大公约数,它也必然是ri-1和ri、ri-2和ri-1、…、r1与r2、n和r2、m和n的最大公约数.
;(2)辗转相除法的算法分析:
由以上辗转相除法的原理可以发现,辗转相除法的基本步骤是用较大的数除以较小的数,考虑到算法中的赋值语句可以对同一变量多次赋值,我们可以把较大的数用变量m表示,把较小的数用变量n表示,这样式子m=n·q+r(0≤rn)就是一个反复执行的步骤,因此可以用循环结构实现算法.如图.;(3)用辗转相除法求任意两个正整数最大公约数的程序框图.
由于辗转相除法总是用较大的数去除以较小的数,所以首先要对一开始给定的两数的大小进行判断,并将大数赋给m,小数赋给n,然后再执行下面的过程.程序框图如图.;第13页/共39页;(4)用辗转相除法求两个数的最大公约数的程序设计:
;2.更相减损术
(1)更相减损术求两数最大公约数的过程与算法设计.
对于给定的两个数,用较大的数减去较小的数,接着把得到的差与较小的数比较,用这时两个数中较大的数减去较小的数,继续这样的操作(大数减小数),直到所得的数相等为止,那么这个数(相等数)就是所求的最大公约数.;显然,上述过程中大数减去小数是一个重复执行的过程,因此只需将大数赋给变量a,小数赋给变量b,那么就可以通过循环结构实现算法.或当ab时,将a-b赋给a,b=b,当ab时,a=a,将b-a赋给b然后再进行比较,依次类推用循环结构实现.
;(2)更相减损术求最大公约数的程序设计如下:;3.辗转相除法与更相减损术有着相同的算法依据,但要注意运算过程的差别,辗转相除法的上一次运算的除数和余数分别作为下一次运算的被除数和除数,其结果直至余数为零得出.更相减损术在上一次运算结束后,比较减数和差的大小,将大的作为下一次运算的被减数,小的作为减数,直至出现相等数时得到结果.;由此可见,二者算法是相似的.主要区别在于,辗转相除法进行的是除法运算,即辗转相除,更相减损术进行的是减法运算,即辗转相减,但其实质都是一个不断的递归过程.另外两者在算法设计上有一个重要的区别点,辗转相除法,下一次进行相除时,由上一次的除数和余数直接相除即可.而更相减损术下一次相减前必须有一个判断大小的过程,以区别谁做被减数.这些内容都是应特别注意的关键环节.;4.用更相减损术求两正整数的最大公约数时,若两数为偶数,可先约去2,这时莫忘记求得的相等两数乘以约简的数才是所求最大公约数.;第21页/共39页;
[例1] 用辗转相除法和更相减损术两种方法求80和36的最大公约数.;
[解析] 用辗除相除法:
80=36×2+8,
36=8×4+4,
8=4×2+0.
故80和36的最大公约数是4.;用更相减损术:
80-36=44,
44-36=8,
36-8=28,
28-8=20,
20-8=12,
12-8=4,
8-4=4.
∴80和36的最大公约数是4.
;[点评] (1)辗转相除法是当大数被小数除尽时,结束除法运算,较小的数就是最大公约数;更相减损术是当大数减去小数的差等于小数时停止减法运算,较小的数就是最大公约数.
(2)用更相减损术求时,如果先约去2×2,则变为求20和9的最大约数,最后结
文档评论(0)