描述
数字可以被视为其因数的乘积。 例如,
8 = 2 x 2 x 2;
= 2 x 4。
编写一个函数,可以输入整数n并返回其因子的所有可能组合。
说明
您可以假设n总是正数。
因数应大于1且小于n。
样例
- 样例1
输入: 12
输出:
[
[2, 6],
[2, 2, 3],
[3, 4]
]
解释:
2*6 = 12
2*2*3 = 12
3*4 = 12
- 样例2
输入: 32
输出:
[
[2, 16],
[2, 2, 8],
[2, 2, 2, 4],
[2, 2, 2, 2, 2],
[2, 4, 4],
[4, 8]
]
解释:
2*16=32
2*2*8=32
2*2*2*4=32
2*2*2*2*2=32
2*4*4=32
4*8=32
解析
class Solution:
def dfs(self, n, subset, start, result):
while start * start <= n:
if n % start == 0:
result.append(subset + [start, n//start])
self.dfs(n//start, subset + [start], start, result)
start += 1
return result
def getFactors(self, n):
result = []
self.dfs(n, [], 2, result)
return result