资源描述
第21讲 算法与统计
大家喜欢打乒乓球吧,由于东、西方文化及身体条件的不同,西方人喜欢横握拍打球,东方人喜欢直握拍打球,对于同一个问题,东、西方人处理问题方式是有所不同的.在小学,我们学过求两个正整数的最大公约数的方法:先用两个数公有的质因数连续去除,一直除到所得的商是互质数为止,然后把所有的除数连乘起来. 当两个数公有的质因数较大时(如8251与6105),使用上述方法求最大公约数就比较困难.下面我们介绍两种不同的算法——辗转相除法与更相减损术,由此可以体会东、西方文化的差异.
(1)辗转相除法
辗转相除法求两个数的最大公约数,其算法步骤可以描述如下:
第一步,给定两个正整数m,n.
第二步,求余数r:计算m除以n,将所得余数存放到变量r中.
第三步,更新被除数和余数:m=n,n=r.
第四步,判断余数r是否为0.若余数为0,则输出结果;否则转向第二步继续循环执行.
如此循环,直到得到结果为止. 这种算法是由欧几里得在公元前300年左右首先提出的,因而又叫欧几里得算法.
(2)更相减损术
我国早期也有解决求最大公约数问题的算法,就是更相减损术. 《九章算术》是中国古代的数学专著,其中的“更相减损术”也可以用来求两个数的最大公约数,即“可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也.以等数约之.”翻译为现代语言如下:
第一步,任意给定两个正整数,判断它们是否都是偶数,若是,用2约简;若不是,执行第二步.
第二步,以较大的数减去较小的数,接着把所得的差与较小的数比较,并以大数减小数,继续这个操作,直到所得的数相等为止,则这个数(等数)或这个数与约简的数的乘积就是所求的最大公约数.
由上面的两种算法我们引入算法的教学。
展开阅读全文