1234567891011121314151617181920212223242526 |
- 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
- }
|