03/03/13 15:53
>>419
こんなんでどうっすか。
/**
* 整数の平方根を返します。端数は切り捨てられます。
* @param value intの値
* @return 引数の平方根
*/
public static int sqrt(int value) {
// 相加相乗の不等式(√ab≦(a+b)/2 ⇒ √a≦(a+1)/2)の右辺を初期値に選んで、
// ニュートン法で収束させる。
int x0 = value;
int x1 = (value + 1) >> 1;
while (x0 > x1) {
x0 = x1;
x1 = (x0 + value / x0) >> 1;
};
return x0;
}