第一章算法初步1
3算法案例35915[问题1]:在小学,我们已经学过求最大公约数的知识,你能求出18与30的最大公约数吗
〖创设情景,揭示课题〗183023∴18和30的最大公约数是2×3=6
先用两个数公有的质因数连续去除,一直除到所得的商是互质数为止,然后把所有的除数连乘起来
案例1辗转相除法与更相减损术〖创设情景,揭示课题〗[问题2]:我们都是利用找公约数的方法来求最大公约数,如果两个数比较大而且根据我们的观察又不能得到一些公约数,我们又应该怎样求它们的最大公约数
比如求8251与6105的最大公约数
〖研探新知〗1
辗转相除法:例1求两个正数8251和6105的最大公约数
分析:8251与6105两数都比较大,而且没有明显的公约数,如能把它们都变小一点,根据已有的知识即可求出最大公约数
解:8251=6105×1+2146显然8251与6105的最大公约数也必是2146的约数,同样6105与2146的公约数也必是8251的约数,所以8251与6105的最大公约数也是6105与2146的最大公约数
辗转相除法:例1求两个正数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
则37为8251与6105的最大公约数
以上我们求最大公约数的方法就是辗转相除法
也叫欧几里德算法,它是由欧几里德在公元前300年左右首先提出的
•第一步,给定两个正数m,n•第二步,计算m除以n所得到余数r•第三步,m=n,n=r•第四步,若r=0,则m,n的最大公约数等于m;否则返回第二步辗转相除法求最大公约数算法:思考:需不需要比较m,n的大小不需要否开始输入两个正数m,nr=mMODnr=0
输出m结束m=nn=r是程序框图