06/11/13 20:45:09
>>106
入力が32bitの場合の事?
掛け算が使えるならニュートン法が一番高速と思うけど
掛け算使えないなら、
(a+2^n)^2= a^2 + 2^(n+1)*a +2^2n
を使って処理するといいよ。
n=0の時はこの式は (a+1)^2= a^2 + 2*a +1 で
a^2に 2a+1を加算すれば(a+1)^2になる事を意味してる=奇数を加算すればいい
具体的には、 aとa2 の2つの変数を最初0から、n=15から スタートして
入力値Xと a2 とを比較しては
a2=a2 + 2^(n+1)*a +2^2n ; a=a+(2^n) ;
と更新してゆくわけ