您好,欢迎访问三七文档
算法案例第一课时1.回顾算法的三种表示方法:(1)、自然语言(2)、程序框图(3)、程序语言(三种逻辑结构)(五种基本语句)复习引入问:求175和245的最大公约数先用两个公有的质因数连续去除,一直除到所得的商是互质数为止,然后把所有的除数连乘起来.问:如何算出8251和6105的最大公约数?亚历山大里亚的欧几里得(希腊文:Ευκλειδης,约公元前330年—前275年),古希腊数学家,被称为“几何之父”。他活跃于托勒密一世(公元前323年-前283年)时期的亚历山大里亚,他最著名的著作《几何原本》是欧洲数学的基础,提出五大公设,发展欧几里得几何,被广泛的认为是历史上最成功的教科书。欧几里得也写了一些关于透视、圆锥曲线、球面几何学及数论的作品。一、辗转相除法(欧几里得算法)1、定义:所谓辗转相除法,就是对于给定的两个数,用较大的数除以较小的数。若余数不为零,则将余数和较小的数构成新的一对数,继续上面的除法,直到大数被小数除尽,则这时较小的数就是原来两个数的最大公约数。练习:求52317和75569的最大公约数?S1:用大数除以小数S3:重复S1,直到余数为0S2:除数变成被除数,余数变成除数辗转相除法的步骤00:;mnqr第一步用较大的数除以较小的数得到一个商和一个余数00011:0,,;0,;rnmnrnrqr第二步若则为的最大公约数若则用除数除以余数得到一个商和和一个余数1010122:0,,0,rrmnrrrqr第三步若则为的最大公约数;若则用除数除以余数得到一个商和一个余数10,.nnrr依次计算直至此时所得到的即为所求的最大公约数请同学们用直到型循环结构写出辗转相除法的程序框图和程序语言.(2)、程序框图:开始输入m,nr=mMODnm=nr=0?是否n=r输出m结束(3)、程序:INPUT“m,n=“;m,nDOr=mMODnm=nn=rLOOPUNTILr=0PRINTmEND思考?你能用当型循环结构构造算法,求两个正整数的最大公约数吗?试写出算法步骤,程序框图和程序.开始输入m,nr=1r0?求m除以n的余数rm=nn=r输出m结束是否INPUTm,nr=1WHILEr0r=mMODnm=nn=rWENDPRINTmEND例:求98与63的最大公约数.二、更相减损术可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也,以等数约之。第一步:任意给定两个正整数;判断他们是否都是偶数。若是,则用2约简;若不是则执行第二步。第二步:以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止,则这个等数就是所求的最大公约数。(1)、《九章算术》中的更相减损术:1、背景介绍:(2)、现代数学中的更相减损术:2、定义:所谓更相减损术,就是对于给定的两个数,用较大的数减去较小的数,然后将差和较小的数构成新的一对数,再用较大的数减去较小的数,反复执行此步骤直到差数和较小的数相等,此时相等的两数便为原来两个数的最大公约数。1、用更相减损术求两个正数84与72的最大公约数.练习:思路分析:先约简,再求21与18的最大公约数,然后乘以两次约简的质因数4。问题2:利用“更相减损术”求两个正整数m与n的最大公约数。“更相减损术”的一般步骤:第一步:用较大的数m减去较小的数n,得到差d1;第二步:比较数n和差d1,以两者中的较大数(仍记为n)减较小数(仍记为d1),得到差d2;第三步:比较数d1和数d2,以两者中的较大数(仍记为d1)减较小数(仍记为d2),的到差d3;……依次计算直至dn-1=dn,则,此时dn-1和dn就是所求的最大公约数。(说明:这不是一个算法!)利用“更相减损术法”求两个正数m和n的最大公约数。算法步骤:第一步:输入两个正整数m,n。第二步:判断mn是否成立,若成立,交换m,n;若不成立,执行第三步。第三步,d=m-n第四步:m=n,n=d第五步:判断“m=n”是否成立。若是,则m,n的最大公约数为m(或n),否则返回第二步开始输入两个正整数m,nmnt=nn=mm=td=m-nm=nn=dm=n输出m结束NYYNINPUT“m=”;mINPUT“n=”;nDOIFmnTHENt=mm=nn=tENDIFd=m-nm=nn=dLOOPUNTILm=nPRINTmEND框图:程序:利用“更相减损术法”求两个正数m和n的最大公约数。另一种算法步骤:第一步:令k=0,再输入两个正整数m,n。第二步:判断mn是否成立,若成立,交换m,n;若不成立,执行第三步。第三步,若m,n都是偶数,则都用2约简后,仍分别记为m,n,k=k+1,返回第三步;否则继续第四步。第四步:d=m-n第五步:判断“d≠n”是否成立。若是,则将n,d中的较大者记为m,较小者记为n,返回第四步;否则2kd为所求的最大公约数。请画出程序框图,写出程序。比较辗转相除法与更相减损术的区别(1)都是求最大公约数的方法,计算上辗转相除法以除法为主,更相减损术以减法为主,计算次数上辗转相除法计算次数相对较少,特别当两个数字大小区别较大时计算次数的区别较明显。(2)从结果体现形式来看,辗转相除法体现结果是以相除余数为0则得到,而更相减损术则以减数与差相等而得到。小结
本文标题:辗转相除法
链接地址:https://www.777doc.com/doc-1825096 .html