Каков наиболее эффективный алгоритм для печати всех уникальных комбинаций факторов положительного целого. Например, если заданное число равно 24, тогда выход должен быть
24*1
12*2
8*3
6*4
6*2*2
4*3*2
3*2*2*2
Здесь обратите внимание, что когда 6 * 4 печатается, 4 * 6 не печатается. Таким образом, в основном это проблема взятия уникальных подмножеств без учета порядка (один из способов взглянуть на проблему). Но цель состоит в том, чтобы иметь функцию, которая работает быстрее, поэтому сохранение факторов в структуре данных для дальнейших манипуляций может потребовать больше времени. Я попробовал свой алгоритм и вставил свой код ниже, но он, похоже, не дает мне желаемого результата, я ошибаюсь в своем рекурсивном вызове. Можете ли вы помочь мне найти эффективный способ сделать это?
public static void printfact(int num){
int temp=0;
for(int i=num-1;i>=num/2;i--){
if(num % i == 0){
temp = num/i;
System.out.println(temp + " * " + i);
if(isprime(i)==false){
System.out.print(temp + " * ");
printfact(i);
}
}
}
}