1、第一章 算法初步1.3 算法案例3 59 15问题 1:在小学,我们已经学过求最大公约数的知识,你能求出 18与 30的最大公约数吗? 创设情景,揭示课题 18 3023 18和 30的最大公约数是 23=6.先用两个数公有的 质因数 连续去除 ,一直除到所得的商是互质数为止 ,然后把所有的除数连乘起来 .案例 1 辗转相除法与更相减损术 创设情景,揭示课题 问题 2:我们都是利用找公约数的方法来求最大公约数,如果两个数比较大而且根据我们的观察又不能得到一些公约数,我们又应该怎样求它们的最大公约数?比如求 8251与6105的最大公约数 ? 研探新知 1.辗转相除法 :例 1 求两个正数 82
2、51和 6105的最大公约数。分析: 8251与 6105两数都比较大,而且没有明显的公约数,如能把它们都变小一点,根据已有的知识即可求出最大公约数 .解: 8251 61051 2146显然 8251与 6105的最大公约数也必是 2146的约数,同样 6105与 2146的公约数也必是 8251的约数,所以 8251与 6105的最大公约数也是6105与 2146的最大公约数。1.辗转相除法 :例 1 求两个正数 8251和 6105的最大公约数。解: 8251 61051 2146;6105 21462 1813;2146 18131 333;1813 3335 148;333 1482
3、 37;148 374 0.则 37为 8251与 6105的最大公约数。以上我们求最大公约数的方法就是辗转相除法。也叫欧几里德算法,它是由欧几里德在公元前 300年左右首先提出的。 第一步 ,给定两个正数 m,n 第二步 ,计算 m除以 n所得到余数 r 第三步 ,m=n,n=r 第四步 ,若 r=0,则 m,n的最大公约数等于 m;否则返回第二步辗转相除法求最大公约数算法:思考 :需不需要比较 m, n的大小不需要否开始输入两个正数 m,nr=m MOD nr=0?输出 m结束m=nn=r是程序框图练习 1:利用辗转相除法求两数 4081与 20723的最大公约数 . (53)20723=
4、40815+318;4081=31812+265;318=2651+53;265=535+0.2.更相减损术 :我国早期也有解决求最大公约数问题的算法,就是更相减损术。更相减损术求最大公约数的步骤如下:可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也,以等数约之。翻译出来为:第一步:任意给出两个正数;判断它们是否都是偶数。若是,用 2约简;若不是,执行第二步。第二步:以较大的数减去较小的数,接着把较小的数与所得的差比较,并以大数减小数。继续这个操作,直到所得的数相等为止,则这个数(等数)就是所求的最大公约数。例 2 用更相减损术求 98与 63的最大公约数 .解:由于 63不是偶数,把 98和 63以大数减小数,并辗转相减, 即: 98 63 35;63 35 28;35 28 7;28 7 21;21 7 14;14 7 7.所以, 98与 63的最大公约数是 7。练习 2:用更相减损术求两个正数 84与 72的最大公约数。 (12)