# Time: O(nlogn) # Space: O(logn) class Solution: # @param {integer} n # @return {integer[][]} def getFactors(self, n): result = [] factors = [] self.getResult(n, result, factors) return result def getResult(self, n, result, factors): i = 2 if not factors else factors[-1] while i <= n / i: if n % i == 0: factors.append(i); factors.append(n / i); result.append(list(factors)); factors.pop(); self.getResult(n / i, result, factors); factors.pop() i += 1