辗转相除法与更相减损术

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1.3算法案例第一课时问题提出1.研究一个实际问题的算法,主要从算法步骤、程序框图和编写程序三方面展开.在程序框图中算法的基本逻辑结构有哪几种?在程序设计中基本的算法语句有哪几种?2.“求两个正整数的最大公约数”是数学中的一个基础性问题,它有各种解决办法,我们以此为案例,对该问题的算法作一些探究.知识探究(一):辗转相除法思考1:18与30的最大公约数是多少?你是怎样得到的?先用两个数公有的质因数连续去除,一直除到所得的商是互质数为止,然后把所有的除数连乘起来即为最大公约数.思考2:对于8251与6105这两个数,由于其公有的质因数较大,利用上述方法求最大公约数就比较困难.注意到8251=6105×1+2146,那么8251与6105这两个数的公约数和6105与2146的公约数有什么关系?由上式可以看出,8251与6105和6105与2146有相同的公约数,因此也有相同的最大公约数。思考3:又6105=2146×2+1813,同理,6105与2146的公约数和2146与1813的公约数相等.重复上述操作,你能得到8251与6105这两个数的最大公约数吗?2146=1813×1+333,148=37×4+0.333=148×2+37,1813=333×5+148,8251=6105×1+2146,6105=2146×2+1813,思考4:上述求两个正整数的最大公约数的方法称为辗转相除法或欧几里得算法.一般地,用辗转相除法求两个正整数m,n的最大公约数,可以用什么逻辑结构来构造算法?其算法步骤如何设计?第一步,给定两个正整数m,n(mn).第二步,计算m除以n所得的余数r.第三步,m=n,n=r.第四步,若r=0,则m,n的最大公约数等于m;否则,返回第二步.思考5:该算法的程序框图如何表示?开始输入m,n求m除以n的余数rm=nn=rr=0?是输出m结束否思考6:该程序框图对应的程序如何表述?INPUTm,nDOr=mMODnm=nn=rLOOPUNTILr=0PRINTmEND开始输入m,n求m除以n的余数rm=nn=rr=0?是输出m结束否思考7:如果用当型循环结构构造算法,则用辗转相除法求两个正整数m,n的最大公约数的程序框图和程序分别如何表示?开始输入m,n求m除以n的余数rm=nn0?否输出m结束是n=rINPUTm,nWHILEn0r=mMODnm=nn=rWENDPRINTmEND思考1:下面两组数的公约数是否一样?最大公约数呢?为什么?(1)112、42;(2)42、70.分析:设A={112与42的公约数},B={42与70的公约数}∵112-42=70∴112与42的所有公约数都是70的约数故112与42的所有公约数也是42与70的公约数,即A⊆B同理可得,42与70的所有公约数也是112与42的公约数即B⊆A∴A=B,即这两组数的公约数恰好相同故最大公约数也相同知识探究(二):更相减损术思考1:下面两组数的公约数是否一样?最大公约数呢?为什么?(1)112、42;(2)42、70.解:∵112-42=7070-42=2842-28=1428-14=14∴112与42的最大公约数为14gcd(112,42)=gcd(42,70)=gcd(42,28)=gcd(28,14)=gcd(14,14)=14gcd(a,b)表示正整数a与b的最大公约数思考2:设两个正整数mn,若m-n=k,则m与n的最大公约数和n与k的最大公约数相等.反复利用这个原理,可求得98与63的最大公约数为多少?98-63=35,14-7=7.21-7=14,28-7=21,35-28=7,63-35=28,思考3:上述求两个正整数的最大公约数的方法称为更相减损术.一般地,用更相减损术求两个正整数m,n的最大公约数,可以用什么逻辑结构来构造算法?其算法步骤如何设计?第一步,给定两个正整数m,n(mn).第二步,计算m-n所得的差k.第三步,比较n与k的大小,其中大者用m表示,小者用n表示.第四步,若m=n,则m,n的最大公约数等于m;否则,返回第二步.思考3:该算法的程序框图如何表示?开始输入m,nnk?m=n是输出m结束m≠n?k=m-n是否n=km=k否思考4:该程序框图对应的程序如何表述?INPUTm,nWHILEmnk=m-nIFnkTHENm=nn=kELSEm=kENDIFWENDPRINTmEND开始输入m,nnk?m=n是输出m结束m≠n?k=m-n是否n=km=k否更相减损术算理:可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也,以等数约之。第一步:任意给定两个正整数;判断他们是否都是偶数。若是,则用2约简;若不是,则执行第二步。第二步:以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止,则这个等数或这个等数与约简的数的乘积就是所求的最大公约数。理论迁移例1分别用辗转相除法和更相减损术求168与93的最大公约数.辗转相除法:168=93×1+7593=75×1+1875=18×4+318=3×6更相减损术:168-93=75,93-75=18,75-18=57,57-18=39,39-18=21,21-18=3,18-3=15,15-3=12,12-3=9,9-3=6,6-3=3.例2求325,130,270三个数的最大公约数.因为325=130×2+65,130=65×2,所以325与130的最大公约数是65.因为270=65×4+10,65=10×6+5,10=5×2,所以65与270最大公约数是5.故325,130,270三个数的最大公约数是5.1.辗转相除法,就是对于给定的两个正整数,用较大的数除以较小的数,若余数不为零,则将余数和较小的数构成新的一对数,继续上面的除法,直到大数被小数除尽为止,这时的较小的数即为原来两个数的最大公约数.小结2.更相减损术,就是对于给定的两个正整数,用较大的数减去较小的数,然后将差和较小的数构成新的一对数,继续上面的减法,直到差和较小的数相等,此时相等的两数即为原来两个数的最大公约数.二者算理相似,有异曲同工之妙1)都是求最大公约数的方法,计算上辗转相除法以除法为主,更相减损术以减法为主,计算次数上辗转相除法计算次数相对较少,特别当两个数字大小区别较大时计算次数的区别较明显。2)从结果体现形式来看,辗转相除法体现结果是以相除余数为0则得到,而更相减损术则以减数与差相等而得到(差为0)。3.辗转相除法与更相减损术的区别

1 / 23
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功