牛顿迭代法
求平方
public static double sqrt(double c) {
if (c < 0) return Double.NaN;
double err = 1e-15; //设置误差不超过1*10^-15
double t = c; //设置初始等于c
while (Math.abs(t-c/t) > err*t) //1-c/t^2的绝对值小于err时停止
t = (c/t+t)/2;
return t;
}
求立方
public double getCube(double input){
double x = 1;
double x1 = x - (x*x*x - input) / (3*x*x);
while(x - x1 >0.000000001 || x - x1 < -0.000000001){ //判断精度
x = x1;
x1 = x - (x*x*x - input) / (3*x*x);
}
return x1;
}
判断是否为完全平方数
//判断一个数,是否为完全平方数
public boolean isPerfectSquare(int num){
long x = num;
while (x * x > num) {
System.out.println(x*x);
x = (x + num / x) / 2;
}
int sqnum = (int) x;
return (sqnum * sqnum == num);
}