func integerBreak(n int) int { if n < 4 { return n - 1 } sqrt := int(math.Sqrt(float64(n))) max := helper(n, sqrt) for i := sqrt + 1; i < n/2; i++ { if tmp := helper(n, i); max < tmp { max = tmp } } return max } func helper(n, k int) int { div, mod, prod := n/k, n%k, 1 for i := 0; i < k; i++ { if i < mod { prod *= div + 1 } else { prod *= div } } return prod }