Sum of Square Numbers 平方数之和

给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c。

示例1:

输入: 5
输出: True
解释: 1 * 1 + 2 * 2 = 5

示例2:

输入: 3
输出: False

思路:因为要满足a^2+b^2=c,所以a的取值范围为[0,sqrt(c)],所以循环设置为[0,sqrt(c)],每次循环中我们反计算出b,b=sqrt(c-a^2),如果b是整数,那么返回true,如果遍历完都找不到满足条件的b,那么返回false。

参考代码:

class Solution {
public:
    bool judgeSquareSum(int c) {
        for (long long a = 0; a*a <= c; a++) {
            double b = sqrt(c - a * a);
            if (b == ((int)b)) {
                return true;
            }
        }
        return false;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_26410101/article/details/84197407