这样的话,我们可以按住i不动,继续分n // i 而且只分一些大于等于i的因子出来,这样就可以有效地去重
这里需要注意是嵌套,假设我们最终dfs返回的是res:list嵌套list,这样我们在看dfs(n // i, i)的时候,可以拿出里面的每个sub,然后把它和[i]连起来,再统一作为外层的res输出即可
ac code
classSolution:defgetFactors(self, n:int)-> List[List[int]]:@cachedefdfs(cur, lower):
res =[]for i inrange(lower,int(sqrt(cur))+1):if cur % i ==0:
res.append([i, cur // i])for sub in dfs(cur // i, i):# 保持不减,防止重复
res.append(sub +[i])return res
return dfs(n,2)# 从2开始