将正整数拆分为3个正整数之和,求lcm最小的拆分方案
问题求解方案
给定整数2 < n < 2^31,求解三个正整数a、b、c满足a+b+c =n且lcm(a,b,c)最小的方案,时间复杂度为O(1),完全适配大整数场景,分情况处理如下:
情况1:n能被3整除(n % 3 == 0)
- 拆分方案:
a = b = c = n/3 - 对应lcm:
n/3 - 原理:三个数相等时最小公倍数等于本身,且是所有可能中最小的取值(三个数的平均值为n/3,最小公倍数不可能小于平均值)。
情况2:n除以3余1(n %3 ==1)
子情况2.1:n为奇数
- 拆分方案:
a=1, b=(n-1)/2, c=(n-1)/2 - 对应lcm:
(n-1)/2 - 示例:n=7,拆分
1,3,3,lcm=3。
子情况2.2:n为偶数
2.2.1 n能被4整除
- 拆分方案:
a = n/4, b =n/4, c= n/2 - 对应lcm:
n/2 - 示例:n=16,拆分
4,4,8,lcm=8。
2.2.2 n除以4余2
- 拆分方案:
a=2, b=(n-2)/2, c=(n-2)/2 - 对应lcm:
(n-2)/2 - 示例:n=10,拆分
2,4,4,lcm=4。
情况3:n除以3余2(n%3 ==2)
子情况3.1:n为奇数
- 拆分方案:
a=1, b=(n-1)/2, c=(n-1)/2 - 对应lcm:
(n-1)/2 - 示例:n=17,拆分
1,8,8,lcm=8,和题目给出的最优解一致。
子情况3.2:n为偶数
3.2.1 n能被4整除
- 拆分方案:
a =n/4, b=n/4, c=n/2 - 对应lcm:
n/2 - 示例:n=8,拆分
2,2,4,lcm=4。
3.2.2 n除以4余2
- 拆分方案:
a=2, b=(n-2)/2, c=(n-2)/2 - 对应lcm:
(n-2)/2 - 示例:n=14,拆分
2,6,6,lcm=6。
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

