Eine Sammlung von positiven ganzen Zahlen d_1 d_2 ... d_k
ist eine Faktorisierung einer positiven ganzen Zahl, n
wenn
d_1 * d_2 * ... * d_k = n
Jede positive ganze Zahl hat eine eindeutige Primfaktorisierung , aber im Allgemeinen haben sie auch Faktorisierungen, in denen einige der Begriffe zusammengesetzt sind. Z.B
12 = 6 * 2 = 4 * 3 = 3 * 2 * 2
Schreiben Sie ein Programm, eine Funktion, ein Verb oder Ähnliches, das eine einzelne positive Ganzzahl als Eingabe verwendet und eine vollständige Liste der einzelnen Faktorisierungen zurückgibt oder ausgibt. Die Faktorisierungen können in beliebiger Reihenfolge erstellt werden, und ihre Begriffe können in beliebiger Reihenfolge angegeben werden, es sollten jedoch keine zwei Permutationen voneinander sein. Faktorisierungen dürfen 1
mit zwei Ausnahmen nicht enthalten sein : Für Eingaben können n
Sie die Faktorisierung n*1
anstelle von angeben n
; und zur Eingabe 1
kann 1
anstelle der leeren Liste die Faktorisierung angegeben werden.
Sie können davon ausgehen, dass die Eingabe im Bereich einer vorzeichenbehafteten 32-Bit-Ganzzahl liegt. Wenn es sich bei der Ausgabe um eine Zeichenfolge handelt, sollte klar zwischen der Abgrenzung von Zahlen innerhalb einer Faktorisierung und der Abgrenzung der Faktorisierungen unterschieden werden, es ist jedoch nicht erforderlich (zum Beispiel), dass die Faktoren mit einem verknüpft werden *
.
Ihr Code sollte in der Lage sein, alle gültigen Eingaben innerhalb von 10 Minuten auf einem vernünftigen Desktop-Computer zu verarbeiten.
Beispiele
1 [[]]
or [[1]]
or [[1 1]]
7 [[7]]
or [[7 1]]
or [[1 7]]
12 [[12] [6 2] [4 3] [2 3 2]]
or variants
16 [[2 2 2 2] [2 2 4] [2 8] [4 4] [16]]
or variants
901800900 a list of 198091 factorisations
1338557220 a list of 246218 factorisations
901800900
und1338557220
irgendwo veröffentlichen, wo wir sie überprüfen können? Mein Code gibt mir 2048 bzw. 1024 Faktorisierungen für diese Zahlen, und ich bin mir nicht sicher, warum.