【问题标题】:integer square root of an integer, why does this work?整数的整数平方根,为什么会这样?
【发布时间】:2014-04-01 09:16:16
【问题描述】:

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

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并重复该过程,否则输出为输入的整数平方根。我不知道这个算法起作用的原因,请问有没有人知道。

【问题讨论】:

标签: assembly square-root


【解决方案1】:

要生成 (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 所以

(2 i - 1) = n^2 的 i = 1 到 n 之和。

【讨论】:

    猜你喜欢
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    • 2015-03-04
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    • 2013-03-01
    相关资源
    最近更新 更多