判斷完全平方數與不使用Sqrt函式求開方
阿新 • • 發佈:2019-02-10
1、完全平方數的尾數為0,1,4,5,6,9
2.由於1+3+5+…+(2n-1) = (2n-1+1)*n/2 = n^2依據該公式可以得出完全平方式的求解過程:
public boolean isPerfectSquare(int num) {
int left = num%10;
if(!(left==0||left==1||left==4||left==5||left==6||left==9)){
return false;
}
for(int i = 1; num > 0; i=i+2){
num = num - i;
}
if (num==0)
return true;
return false;
}
3.說到這裡,順便講講數值分析課中學到的牛頓迭代法求開方
牛頓迭代法:
求x^2 = n ,求n;
f(x)= x^2 - n
f(x) = 0 即為解。
f(x)的導數為2*x。然後x0 = num /2.0,一隻迭代,直到f(xn)趨近於0.
public static double GetSqrt(int num) {
double x = num/2.0;
while( (x*x-num) > 0.000001){
x = x - (x*x - num)*1.0 /(2.0*x);
}
return x;
}