第 12 课时 5.4 算法案例重点难点重点:通过案例分析理解辗转相除法与更相减损术求最大公约数的方法,体会算法思想。 难点:把辗转相除法与更相减损术的方法转换成程序框图与程序语言.学习要求 1.理解辗转相除法与更相减损术中蕴含的数学原理,并能根据这些原理进行算法分析。 2.基本能根据算法语句与程序框图的知识设计完整的程序框图并写出算法程序.【课堂互动】问题:写出求两个正整数 a,b(a>b)的最大公约数的一个算法。1.辗转相除法公元前 3 世纪,欧几里得介绍了求两个正整数 a,b(a>b)的最大公约数的方法,求出一列数:,这列数从第三项开始,每一项都是前两项相除所得的余数(即),余数等于 0 的前一项,即是 a 和 b 的最大公约数,这种方法称为“欧几里得辗转相除法”。例 1 求两个正数 8251 和 6105 的最大公约数.(分析:8251 与 6105 两数都比较大,而且没有明显的公约数,如能把它们都变小一点,根据已有的知识即可求出最大公约数)【解】8251=6105×1+2146显然 8251 和 2146 的最大公约数也必是2146 的约数,同样 6105 与 2146 的公约数也必是 8251 的约数,所以 8251 与 6105 的最大公约数也是 6105 与 2146 的最大公约数.6105=2146×2+18132146=1813×1+3331813=333×5+148333=148×2+37148=37×4+0则 37 为 8251 与 6105 的最大公约数.【小结】以上我们求最大公约数的方法就是欧几里得辗转相除法.其求最大公约数的步骤如下:第一步:用较大的数除以较小的数得到一个商和一个余数;第二步:若,则为的最大公约数;若,则用除数除以余数得到一个商和一个余数;第三步:若,则为的最大公约数;若,则用除数除以余数得到一个商和一个余数;……依次计算直至,此时所得到的即为所求的最大公约数.【练习】求 a=204,b=85 的最大公约数,步骤为:S1 S2 S3 所以它们的最大公约数为 。算法描述:计算出 a÷b 的余数 r,若 r=0,则 b为 a,b 的最大公约数;若 r≠0,则把前面的除数b 作为新的被除数,把余数 r 作为新的除数(a,b要重新赋值,a←b,b←r),继续进行上述运算,直到余数为 0(用 While 循环语句,循环的执行条件是 r≠0,当 r=0 时,循环终止),此时的除数即为所求的最大公约数。算法如下:S1 输入两个正整数 a,b(a>b);S2 若 Mod(a,b)=0,则转 S3;否则 ,r←Mod(a,b), a←b,b←r,转 S2。S3 输出最大公约数 b; ...