给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a*a + b*b = c 。
示例 1:
输入:c = 5
输出:true
解释:1 * 1 + 2 * 2 = 5
示例 2:
输入:c = 3
输出:false
示例 3:
输入:c = 4
输出:true
示例 4:
输入:c = 2
输出:true
示例 5:
输入:c = 1
输出:true
class Solution {
/**
* 所求数的范围必定在0~sqrt(c)之间
*/
public boolean judgeSquareSum(int c) {
/*
要是其中一个数的平方比c都大了,那直接不用算了,骑它头上比它都还大
所以循环到i的平方<=c即可
*/
for (long i = 0; i*i <= c; i++) {
//先得到c与i的平方和的差的平方根,再判断是否为整数
double j = Math.sqrt(c - i*i);
//若是整数,则代表存在两整数平方的和为c
if (j == (int)j) return true;
}
return false;
}
}