Доброе утро всем, сегодня мне показали умный способ оценить целочисленный квадратный корень из целого числа. Хотя он действительно работает, я не понимаю, почему он работает. Вот, код:целочисленный квадратный корень целого числа, почему это работает?
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 и повторяет процесс, иначе вывод представляет собой целочисленный квадратный корень ввода. Я не знаю, почему этот алгоритм работает, я спрашиваю, знает ли кто-нибудь об этом.
Извещение 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 –