正の整数の因数のすべての一意の組み合わせを出力する最も効率的なアルゴリズムは何ですか? たとえば、指定された数値が 24 の場合、出力は次のようになります。
24*1
12*2
8*3
6*4
6*2*2
4*3*2
3*2*2*2
ここで、6*4 が出力されたときに 4*6 が出力されないことに注意してください。したがって、基本的には、順序を考慮せずに一意のサブセットを取る問題です (問題の見方の 1 つ)。ただし、目的は最速で実行される関数を用意することであるため、データ構造に因子を格納してさらに操作を行うには、より多くの時間がかかる可能性があります。アルゴリズムを試してコードを下に貼り付けましたが、目的の結果が得られないようです。再帰呼び出しで間違いを犯しています。これを行う効率的な方法を理解するのを手伝ってもらえますか?
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);
}
}
}
}