Was ist der effizienteste Algorithmus zum Drucken aller einzigartigen Kombinationen von Faktoren einer positiven ganzen Zahl. Zum Beispiel, wenn die angegebene Nummer 24 dann sollte die AusgabeDrucken Sie alle einzigartige Kombination von Faktoren einer bestimmten Nummer
seine24*1
12*2
8*3
6*4
6*2*2
4*3*2
3*2*2*2
hier bemerken, dass, wenn 6 * 4 gedruckt wird dann 4 * 6 nicht gedruckt werden. Im Grunde ist es ein Problem, einzigartige Teilmengen zu nehmen, ohne die Reihenfolge zu berücksichtigen (eine Möglichkeit, das Problem zu betrachten). Das Ziel ist jedoch, eine Funktion zu haben, die am schnellsten läuft, sodass das Speichern der Faktoren in einer Datenstruktur für weitere Manipulationen mehr Zeit in Anspruch nehmen kann. Ich habe meinen Algorithmus ausprobiert und meinen Code unten eingefügt, aber es scheint mir nicht das gewünschte Ergebnis zu geben, ich mache einen Fehler in meinem rekursiven Aufruf. Können Sie mir helfen, einen effizienten Weg zu finden?
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);
}
}
}
}
Danke für die Frage bearbeiten Vorschlag Sanjeev – crazyim5
Ich glaube, Sie brauchen: http://en.wikipedia.org/wiki/Combination#Number_of_combinations_with_repetition, nachdem Sie alle Faktoren finden. –
Weder 6 noch 4 sind Primfaktoren von 24 (oder einer anderen Zahl), da sie nicht, also ... Primzahl sind. – Philip