diff --git a/go/sum-of-square-numbers.go b/go/sum-of-square-numbers.go new file mode 100644 index 0000000..1d1f7ea --- /dev/null +++ b/go/sum-of-square-numbers.go @@ -0,0 +1,28 @@ +package main + +func judgeSquareSum(c int) bool { + bsearch := func(left, right, target int64) bool { + for left <= right { + mid := left + (right-left)/2 + + if mid*mid == target { + return true + } else if mid*mid > target { + right = mid - 1 + } else { + left = mid + 1 + } + } + + return false + } + + t := int64(c) + for a := int64(0); a*a <= t; a++ { + b := t - a*a + if bsearch(0, b, b) { + return true + } + } + return false +}