证明: 这是等差数列的和。
等差数列之和=(首项+末项)× (项数 / 2)
即: 1 + 3 + 5 + ... + (2n-1) = (1 + (2n-1)) * (n/2)
消卜察= n^2
编程思路:
从一个数字 M (包含一个完全平方数 N + e) 中,依次减去:1、3、5、...,直到不够减为止,减去了多少次?平方根就是几。
程序的核心部分如下:
MOV AX,[data];取来M
MOV BX,1 ;首项为1
MOV CX,1
_S_LOOP:
SUB AX,BX
JC_END ;有借位为止
INC BX 拿茄 ;修改为3、5、7...
INC BX
INC CX;n加1
JMP _S_LOOP ;不停的减
_END:
MOV [root],CX;保存n
就这些。
这种求平方根的方法,效率很高,远远高于牛顿迭代法。
汇编程序:用减奇数法开平方(16位)
命题:从 1 开始,把连续 n 项奇数的等差数列,求和,可以得到 n^2。
证明:1 + 3 + 5 + ... + (2n-1) = (1 + (2n-1)) * (n/2) = n^2。
那么,隐袜对于任意正整数 M,都会有:
M = 1 + 3 + 5 + … + ( 2n - 1 ) + ε
= n^2 + ε
= N + ε
式中 N 是完全平方数,N = n^2。
式中 ε 是小于 2n - 1 的误差。
由此灶喊激,可推出“减奇数开平方”的算法。
即:在 M 中依次减去 1、3、5、...,直到不够减为止;
够减的次数 n,即为 N 的平方根。
程序可见:
这种求平渗尘方根的方法,效率很高,远远高于牛顿迭代法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)