candle-ren 发表于 2008-9-16 08:43

程序中不能用浮点数,怎么实现啊?谢谢大家

比如开方之类的,结果就是浮点数,可程序要求不能有浮点数,全用整型实现,怎么办啊?谢谢大家!:@L

风花雪月 发表于 2008-9-16 11:13

算法原理:
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;

}

风花雪月 发表于 2008-9-16 11:14

另一个快一点的方法,牛顿迭代法解方程 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;

}

candle-ren 发表于 2008-9-17 08:32

谢谢楼上哈,大家还有别的注意么?

风花雪月 发表于 2008-9-17 11:15

不知道你说的注意是什么意思

candle-ren 发表于 2008-9-17 16:30

原帖由 风花雪月 于 2008-9-17 11:15 发表 http://www.chinavib.com/forum/images/common/back.gif
不知道你说的注意是什么意思 是主意,哈哈哈

风花雪月 发表于 2008-10-4 09:59

原帖由 candle-ren 于 2008-9-17 16:30 发表 http://www.chinavib.com/forum/images/common/back.gif
是主意,哈哈哈

这就只能靠你自己慢慢想了,无非就是上述间接的方法
页: [1]
查看完整版本: 程序中不能用浮点数,怎么实现啊?谢谢大家