程序中不能用浮点数,怎么实现啊?谢谢大家
比如开方之类的,结果就是浮点数,可程序要求不能有浮点数,全用整型实现,怎么办啊?谢谢大家!:@L 算法原理:1+3+5+...+(2n-1) = n^2
根据公式我们要求X的开方,只需让X-1,X-3,X-5....直到X为负数,这时所有成功的次数就是平方根的整数部分.
public static int sqrt(int x) {
int l1 = 0, l2 = 3;
x--;
while (x >= 0) {
x -= l2;
l2 += 2;
l1++;
}
return l1;
} 另一个快一点的方法,牛顿迭代法解方程 x^2=a
public static int sqrt(int x){
if (x <= 0) return 0;
int l1 = 2;
int l2= 0;
for (int i = 0; i < 25; i++) {
l1= (l1 + x /l1) / 2;
if (l2<= l1 && i != 0) break;
l2 = l1;
}
return l1;
} 谢谢楼上哈,大家还有别的注意么? 不知道你说的注意是什么意思 原帖由 风花雪月 于 2008-9-17 11:15 发表 http://www.chinavib.com/forum/images/common/back.gif
不知道你说的注意是什么意思 是主意,哈哈哈 原帖由 candle-ren 于 2008-9-17 16:30 发表 http://www.chinavib.com/forum/images/common/back.gif
是主意,哈哈哈
这就只能靠你自己慢慢想了,无非就是上述间接的方法
页:
[1]