MIDP1.0不能使用浮点数,因此这个算法只能计算正整数开方的整数部分,且算法中没有任何乘法和除法运算,只有加减运算.
算法原理: 1+3+5+...+(2n-1) = n^2 根据公式我们要求X的开方,只需让X-1,X-3,X-5....直到X为负数,这时所有成功的次数就是平方根的整数部分.
/** * @todo 计算正整数平方根的整数部分 * @param x 要求平方根的正整数 * @return 平方根的整数部分 **/ private int sqrt(int x) { int result = 0,j = 3; x--; while(x >= 0) { x -= j; j += 2; result++; } return result; }
|