辗转相除法案例
- 格式:ppt
- 大小:959.50 KB
- 文档页数:13
四个经典的算法案例案例1:辗转相除法,又名欧几里德算法,它是用来求两个正整数最大公因数的一种方法。
例:用辗转相除法求8251与6105的最大公约数∵ 8251÷6105=1 余 21466105÷2146=2 余 18132146÷1813=1 余 3331813÷ 333=5 余 148333 ÷ 148=2 余 37148 ÷ 37=4∴ 37是8251与6105的最大公约数程序框图如下:其中 r = mod(a, b) r表示a÷b的余数案例2:秦九韶算法,它是中国南宋时期数学家秦九韶提出的,用来解决多项式的求值问题,在西方被称作霍纳算法。
首先看一道例题:求多项式f(x)=2x5―5x4―4x3+3x2―6x+7当x=5时的值。
根据秦九韶算法:f(x)可表示为f(x)=({[(2x―5)x―4]x+3}x―6)x+7于是令 V0=5则 V1=2V0―5=2×5―5=5V2=V1X―4=5×5―4=21V3=V2X+3=21×5+3=108V4=V3X―6=108×5―6=534V5=V4X+7=534×5+7=2677∴ f(5) = 2677秦九韶算法只用到乘法、加法两个简单运算,不需要乘方运算,它是多项式求值的简化算法。
下面看程序框图,其中a0、a1、a2、a3、a4、a5是f (x) 从右向左的系数。
案例3:排序:是一种基本并且常用的算法,排序的算法很多,可以参阅课本,这里不再叙述。
案例4:进位制例:画程序框图,表示把k进制数a(共有n位),转化为十进制数b的过程框图如下:其中:t = GET a│i│ t表示a右数第i位利用上面的算法,把2进制数110011化为十进制的数即:1×20+1×21+0×22+0×23+1×24+1×25= 51以上是四个经典算法,大家可以从中体会算法的基本思想和算法的基本结构,并尝试用算法的基本语句描述它。
1.3 算法案例1.3 算法案例——案例1 辗转相除法与更相减损术8**学习目标**1.理解辗转相除法与更相减损术求最大公约数的方法。
2.把辗转相除法与更相减损术的方法转换成程序框图与程序语言.**要点精讲**1.辗转相除法例如,求两个正数8251和6105的最大公约数。
分析与解:8251与6105两数都比较大,而且没有明显的公约数,可以考虑用两数中较大的数除以较小的数,求得商和余数:8251=6105×1+2146显然8251与6105的公约数也必是2146的约数,同样6105与2146的公约数也必是8251的约数, 所以8251与6105的最大公约数也是6105与2146的最大公约数。
6105=2146×2+1813,2146=1813×1+333,1813=333×5+148333=148×2+37,148=37×4+0则37为37与148的最大公约数,也是148与333的最大公约数,也是333与1813的最大公约数,也是1813与2146的最大公约数,也是2146与6105的最大公约数。
所以,2146与6105的最大公约数是37。
以上我们求最大公约数的方法就是辗转相除法。
也叫欧几里德算法,它是由欧几里德在公元前300年左右首先提出的。
2.更相减损术我国早期也有解决求最大公约数问题的算法,就是更相减损术。
在《九章算术》中记载了更相减损术求最大公约数的步骤:可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也,以等数约之。
翻译为:(1)任意给出两个正数;判断它们是否都是偶数。
若是,用2约简;若不是,执行第二步。
(2)以较大的数减去较小的数,接着把较小的数与所得的差比较,并以大数减小数。
继续这个操作,直到所得的数相等为止,则这个数(等数)就是所求的最大公约数。
**范例分析**例1.试分别用辗转相除法和更相减损术求840与1764、440与556的最大公约数。