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;
}
联系客服