Los números pueden considerarse producto de sus factores. Por ejemplo,
8 = 2 x 2 x 2; = 2 x 4.
Escribe una función que tome un número entero n y devuelva todas las combinaciones posibles de sus factores.
Nota:
Puede suponer que n siempre es positivo.
Los factores deben ser mayores que 1 y menores que n.
Solución Java
public List<List<Integer>> getFactors(int n) { List<List<Integer>> result = new ArrayList<List<Integer>>(); List<Integer> list = new ArrayList<Integer>(); helper(2, 1, n, result, list); return result; } public void helper(int start, int product, int n, List<List<Integer>> result, List<Integer> curr){ if(start>n || product > n ) return ; if(product==n) { ArrayList<Integer> t = new ArrayList<Integer>(curr); result.add(t); return; } for(int i=start; i<n; i++){ if(i*product>n) break; if(n%i==0){ curr.add(i); helper(i, i*product, n, result, curr); curr.remove(curr.size()-1); } } } |