1. 程式人生 > >判斷完全平方數與不使用Sqrt函式求開方

判斷完全平方數與不使用Sqrt函式求開方

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; }