2014-04-01 29 views
1

大家早上好,今天我已經看到了一個聰明的方法來評估一個整數的整數平方根。雖然它確實有效,但我不明白它爲什麼起作用。 下面的代碼:一個整數的整數平方根,爲什麼這個工作?

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 = 1,1 + 3 = 4,1 + 3 + 5 = 9 ...前n個奇數的總和是n^2。這是很常見的系列之一http://mathoverflow.net/questions/4348/sum-of-odd-numbers-results-in-a-square-number –

回答

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 

= 2^2,但由於加入的兩倍之和除以2所以

對於(2 i-1)= n^2的i = 1到n的總和。

相關問題