题目:
解题思路:
如果要找a、b看似要用两个循环去探索2个变量x1、x2的各种可能值的组合:
即求:
但假如我们有第一个循环 for i = 1; i * i < c; i++ 确定x1时,可以将问题转变。
此时x1、c已知,求有没有x2满足等式,即:
此问题可以转变为:是否为整数
代码:
import (
"math"
)
func judgeSquareSum(c int) bool {
//本身就是平方数 直接返回
if math.Sqrt(float64(c)) == float64(int(math.Sqrt(float64(c)))) {
return true
}
//探索
for i:=1; i*i<c; i++{
// c - i^2是整数的平方 则返回True
j := math.Sqrt(float64(c - i*i))
if j == float64(int(j)) {
return true
}
}
return false
}