大家早上好,今天我已经看到了一种聪明的方法来评估整数的整数平方根。虽然它确实有效但我不明白为什么它有效。 这是代码:
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并重复该过程,否则输出是输入的整数平方根。我不知道的是这个算法有效的原因,我问是否有人知道它。
答案 0 :(得分:1)
要生成i = 1到n(2 i - 1)之和,请反转数字并添加:
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 ^ 2.