整数的整数平方根,为什么这样做?

用户名

大家早上好,今天我已经展示了一种评估整数整数平方根的巧妙方法。尽管确实有效,但我仍然不明白它为什么有效。这是代码:

mov output, 0
mov eax, input
mov ebx, 1
loop:
sub eax, ebx 
cmp eax, 0   
jl end      
inc output
add ebx, 2
jmp loop
end:

现在请注意我的问题,我知道这是如何工作的:它将输入减少不均匀数(1、3、5、7 ...),如果输入仍然> = 0,则将输出增加1并重复该过程,否则输出是输入的整数平方根。我不知道这是该算法起作用的原因,我在问是否有人知道它。

rcgldr

要生成(2 i-1)的i = 1到n的和,将数字取反并加:

      1 +    3 +    5 +    7 + ... + 2n-3 + 2n-1
+  2n-1 + 2n-3 + 2n-5 + 2n-7 + ... +    3 +    1
   ----------------------------------------------
     2n +   2n +   2n +   2n + ... +   2n +   2n

= 2n ^ 2,但由于总和加了两次除以2,所以

i = 1至n的(2 i-1)= n ^ 2的总和。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章