美文网首页
给定非负整数c 求是否有a的平方加b的平方等于c

给定非负整数c 求是否有a的平方加b的平方等于c

作者: 水中的蓝天 | 来源:发表于2022-08-25 00:23 被阅读0次

给定非负整数c 求是否有a的平方加b的平方等于c

class Solution {
    public boolean find(int c ) {
       int a = 0, b = mySqrt(c);
       //c直接开方完成 那就肯定存在两个数 一个是 0 另一个是求出来的b
       if(b*b==c) return true;
       while( a < c) {
            int tmp = c - a*a;
            b =  mySqrt(tmp);
            if(b*b==tmp) return true;
            a++;//缓慢逼近 不错过每一次机会 a虽然小 但求出来的b大也是一样
       }
       return false;
    } 
    
    //袖珍计算器算法 求平方根
    public int mySqrt(int x) {
        if(x==0) return 0;
        int ans = (int)Math.exp(0.5*Math.log(x));
        return (long)(ans+1)*(ans+1) <= x ?(ans+1):ans;
    }

}

相关文章

网友评论

      本文标题:给定非负整数c 求是否有a的平方加b的平方等于c

      本文链接:https://www.haomeiwen.com/subject/unwogrtx.html