前言
最近打算集中一段时间刷刷题,但是手头的事情还没做完,于是先简单的找几个题来练练手,毕竟一个月左右没有刷题了,可能有些都遗忘了。
题意
给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c。
示例1:
输入: 5
输出: True
解释: 1 * 1 + 2 * 2 = 5
示例2:
输入: 3
输出: False
解法
这道题解法有很多,还有很少有人知道的费马平方和定理,我们就用最简单的方式:
/**
* @param {number} c
* @return {boolean}
*/
var judgeSquareSum = function(c) {
let xmin = Math.sqrt(0.5*c)
for (a=0;a<=xmin;a++){
if (Math.sqrt(c-a**2)%1===0) {
return true
}
}
return false
};
这个xmin确定的方式是用圆的方程来确定的,八分之一个圆弧。