1.3.1算法案例辗转相除法与更相减损术.pptVIP

  • 5
  • 0
  • 约1.61千字
  • 约 13页
  • 2016-05-28 发布于河南
  • 举报

1.3.1算法案例辗转相除法与更相减损术.ppt

1.3算 法 案 例 (第一课时) 辗转相除法, 又名“欧几里德算法”(Euclidean algorithm)乃求两数之最大公因数算法.它是已知最古老的算法, 其可追溯至公元前300年.它首次出现于欧几里德的《几何原本》中,而在中国则可以追溯至东汉出现的《九章算术》.它并不需要把二数作质因数分解 . * * 1.求两个正整数的最大公约数. (1)求25和35的最大公约数 (2)求49和63的最大公约数 2.求8251和6105的最大公约数 . 25 (1) 5 5 35 7 49 (2) 7 7 63 9 所以,25和35的最大公约数为5 所以,49和63的最大公约数为7 欧几里德 辗转相除法(欧几里得算法) 观察用辗转相除法求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+2146 6105=2146×2+1813 2146=1813×1+333 1813=333×5+148 333=148×2+37 148=37×4+0 例2 用辗转相除法求225和135的最大公约数 225=135×1+90 135=90×1+45 90=45×2 显然37是148和37的最大公约数,也就是8251和6105的最大公约数 显然45是90和45的最大公约数,也就是225和135的最大公约数 思考1:从上面的两个例子可以看出计算的规律是什么? 辗转相除法是一个反复执行直到余数等于0停止的步骤,这实际上是一个循环结构. 8251=6105×1+2146 6105=2146×2+1813 2146=1813×1+333 1813=333×5+148 333=148×2+37 148=37×4+0 m = n × q + r 用程序框图表示出右边的过程 r=m MOD n m = n n = r r=0? 是 否 算法步骤: 辗转相除法是一个反复执行直到余数等于0停止的步骤, 这实际上是一个循环结构 思考:辗转相除直到何时结束?主要运用的是哪种算法结构? ① 输入两个正整数m和n; ② 求余数r:计算m除以n,将所得余数存放到变量r中; ③更新被除数和余数:m=n,n=r; ④判断余数r是否为0:若余数为0则输出结果,否则转 向第②步继续循环执行。 开始 输入:m,n 输出:m 结束 r=0? m=n N Y r=m MOD n n=r 程序:   INPUT “m,n=”;m,n   DO r=m MOD n   m=n   n=r   LOOP UNTIL r=0   PRINT m   END 《九章算术》——更相减损术 算理:可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也,以等数约之。 第一步:任意给定两个正整数;判断他们是否都是偶数.若是,则用2约简;若不是则执行第二步. 第二步:以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数.继续这个操作,直到所得的减数和差相等为止,则这个等数就是所求的最大公约数. 例3 用更相减损术求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 练习: 课本P45练习第1题 *

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档