Print all unique combination of factors of a given number

 

打印一个数的所有乘数组合,从大到小,不能有重复。

Print all unique combinations of factors of a positive integer.

For example, if the given number is 24 then the output should be:

12*2
8*3
6*4
6*2*2
4*3*2
3*2*2*2

 

public List<String> getFactorNumberCombinations(int n) {
    List<String> result = new ArrayList<String>();
    generateFactors(n, "", n, result);
    return result;
}
    
private void generateFactors(int number, String factors, int prevFactor, List<String> result) {
	for (int i = number / 2; i >= 2; i--) {
		if (number % i == 0 && i <= prevFactor) {
			if (number / i <= i) {
				String entry = factors + i + "*" + number / i;
				result.add(entry);
			}
			generateFactors(number / i, factors + i + "*", i, result);
		}
	}
}

 

 

 

你可能感兴趣的:(Print all unique combination of factors of a given number)