算法案例1辗转相除法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
注意到 8251=6105×1+2146
那么8251和6105这两个数的公约数和 6105与2146的公约数有什么关系?
思考:又6105=2146×2+1813,同理, 6105与2146的公约数和2146与1813的公 约数相等.重复上述操作,你能得到8251 与6105这两个数的最大公约数吗?
8251=6105×1+2146, 6105=2146×2+1813, 2146=1813×1+333, 1813=333×5+148, 333=148×2+37, 148=37×4+0.
完整的过程 8251=6105×1+2146
6105=2146×2+1813 辗转相除法
2146=1813×1+333 1813=333×5+148 333=148×2+37
6105=2146×2+1813
r=m MOD n m=n n=r
2146=1813×1+333 1813=333×5+148
r=0?


333=148×2+37 148=37×4+0
思考 其算法步骤如何设计?
第一步,给定两个正整数m,n(m>n). 第二步,计算m除以n所得的余数r. 第三步,m=n,n=r. 第四步,若r=0,则m,n的最大公约数 等 于m;否则,返回第二步.
思考题
1、用当型循环结构写出算法;
2、试写出更相减损术的算法程序;
3、试写出求两个正整数m、n的最小公倍数 的程序。
评价一个算法好坏的一个重要标志是 运算的次数,如果一个算法从理论上需 要超出计算机允许范围内的运算次数, 那么这样的算法就只能是一个理论算法. 在多项式求值的各种算法中,秦九韶算 法是一个优秀算法.
第二步:以较大的数减较小的数,接着把所 得的差与较小的数比较,并以大数减小数。 继续这个操作,直到所得的减数和差相等为 止,则这个等数就是所求的最大公约数。
练习:
1、用更相减损术求两个正数84与72的最大公约数 思路分析:先约简,再求21与18的最大公 约数,然后乘以两次约简的质因数4。
2、求324、243、135这三个数的最大公约数。
98-63=35, 63-35=28, 35-28=7, 28-7=21, 21-7=14, 14-7=7.
二、更相减损术
(1)、《九章算术》中的更相减损术: 可半者半之,不可半者,副置分母、子之数,
以少减多,更相减损,求其等也,以等数约之。
(2)、现代数学中的更相减损术:
第一步:任意给定两个正整数;判断他们是 否都是偶数。若是,则用2约简;若不是则 执行第二步。
复习引入
1、MOD \ 表示什么意思? a MOD b a\b (a b 是正整数)
a=b*q+r (0<=r<b)
2、求 18与30的最大公约数。
先用两个数公有的质因数连续去除,一直除到所 得的商是互质数为止,然后把所有的除数连乘起来即 为最大公约数.
思考:
若求8251和6105的最大公约数呢?
思路分析:求三个数的最大公约数可以先求出 两个数的最大公约数,第三个数与前两个数的 最大公约数的最大公约数即为所求。
小结
比较辗转相除法与更相减损术的区别 (1)都是求最大公约数的方法,计算上辗 转相除法以除法为主,更相减损术以减法为 主,计算次数上辗转相除法计算次数相对较 少,特别当两个数字大小区别较大时计算次 数的区别较明显。 (2)从结果体现形式来看,辗转相除法体 现结果是以相除余数为0则得到,而更相减损 术则以减数与差相等而得到。
问题提出
t
p
1 2
5730
1.研究一个实际问题的算法,主要从 算法步骤、程序框图和编写程序三方面 展开.在程序框图中算法的基本逻辑结构 有哪几种?在程序设计中基本的算法语 句有哪几种?
2.“求两个正整数的最大公约数” 是数学中的一个基础性问题,它有各种 解决办法,我们以此为案例,对该问题 的算法作一些探究.
(欧几里得算法)
显然37是148和 37的最大公约数, 也就是8251和 6105的最大公约 数
148=37×4+0
例:用辗转相除法求225和135的最大公约数
思考:能不能把辗转相除法设计成算法呢?
关键步骤是什么逻辑结构?
m =n×q+r
用程序框图表示出右边的 过程
8251=6105×1+2146
思考:该程序框图和的程序如何表述?
开始
输入mFra Baidu bibliotekn
INPUT m,n DO
求m除以n的余数r
m=n
n=r r=0? 否
是 输出m
r=m MOD n m=n n=r LOOP UNTIL r=0 PRINT m
END
结束
知识探究(二):更相减损术
思考1:设两个正整数m>n,若m-n=k,则m 与n的最大公约数和n与k的最大公约数相 等.反复利用这个原理,可求得98与63的 最大公约数为多少?
相关文档
最新文档