Eingang
Eine einzelne ganze Zahl .
Ausgabe
Die maximale Anzahl eindeutiger positiver Ganzzahlen mit dem Produkt .
Beispiele
Eingabe: 1099511627776. Ausgabe: 9. Eine mögliche optimale Liste von Faktoren ist: (1, 2, 4, 8, 16, 32, 64, 128, 4096).
Eingabe: 127381. Ausgabe 4. Eine mögliche optimale Liste von Faktoren ist: (1, 17, 59, 127).
Bezogen auf diese alte Frage .
code-golf
. Sie können entwederfastest-code
oderfastest-algorithm
für eine bevorstehende Herausforderung in Betracht ziehen . Wenn Sie wirklich wollten, dass alle Antworten in einer begrenzten Zeit innerhalb des angegebenen Bereichs funktionieren, sollte dies ausdrücklich erwähnt worden sein. (Und ich hätte einen kleineren Bereich empfohlen, damit er nichtcode-golf
völlig in Konflikt gerät .)x=1, 2, ...
ich bekommef(x)=1, 2, 2, 2, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 2, 3, 2, 3, 3, 3, 2, 4, 2, 3, 3, 3, 2, 4, 2, 3, 3, 3, 3, 4, 2, 3
was ich in OEIS nicht finde. Es ist klar genug, dass Datensätze für Fakultätszahlen angezeigt werdenx
. Zum Beispiel die kleinste ,x
so dassf(x)=13
sein wird13!
. Ich denke,f
hängt nur von den Exponenten der Primfaktorisierung ab. Also zu findenf(13^4*19^7*29^2)
, könnten wir zu vereinfachenf(2^7*3^4*5^2)
.Antworten:
Wolfram Language (Mathematica) , 52 Byte
Probieren Sie es online!
4 Bytes gespart dank @attinat
Hier ist auch eine 153-Byte- Version, die
1099511627776
und berechnet10^15
Probieren Sie es online!
Das Ergebnis für
10^15
ist 12quelle
Wolfram Language (Mathematica) , 38 Byte
Probieren Sie es online!
Gieriger Algorithmus. Timeout bei TIO bei größeren Eingängen wie
1099511627776
.quelle
05AB1E , 9 Bytes
Sehr ineffizient. Timeout bei TIO für Zahlen mit einer großen Anzahl von Teilern.
Probieren Sie es online!
Erläuterung
quelle
€gZ
ist ein bisschen effizienter alséθg
für den gleichen bytecount.Perl 6 , 38 Bytes
Probieren Sie es online!
Übernimmt den gierigen Ansatz zur Auswahl von Teilern.
quelle
Javascript (ES6), 39 Byte
Es gibt wahrscheinlich ein paar Bytes, die hier und da gespeichert werden können. Verwendet einfach den gierigen Algorithmus für die Faktoren.
quelle
Gelee , 9 Bytes
Probieren Sie es online!
-1 Byte danke an jemanden
-2 Bytes dank ErikTheOutgolfer
quelle
ÆE×8‘½’:2S‘
(it arbeitet mit der Kraft des OEIS "Formel" -Abschnitts für A003056). Haftungsausschluss: Es könnte falsch sein, aber es funktioniert auf den Testfällen.ÆD
, es ist nicht so, als würden mehr Partitionen erstellt werden. Es wird nur viel mehr Zeit in Anspruch nehmenJapt
-h
, 13 BytesVersuch es
quelle
Brachylog , 8 Bytes
Probieren Sie es online!
(Der naive Ansatz
{~×≠l}ᶠ⌉
generiert eine unendliche Anzahl von Lösungen mit zusätzlichen Einsen, bevor sie entfernt werden≠
, und kann daher nicht beendet werden. Es ist jedoch kein Problem, da es sich um dieselbe Bytezahl handelt!)Übernimmt die Eingabe über die Eingabevariable und die Ausgabe über die Ausgabevariable. Die Kopfzeile von TIO enthält eine Kopie des größten Teils des Codes, um Ihnen die Liste der Faktoren anzeigen zu können. Ohne diese Angabe funktioniert dies jedoch einwandfrei. Da
⊇
es zuerst größere Unterlisten gibt, verhält sich dieses Prädikat im Wesentlichen genauso wie die meisten anderen Antworten, ohne jedoch dank Backtracking den vollständigen Potenzsatz der Faktoren explizit zu generieren und zu filtern.quelle
Scala , 77 Bytes
Probieren Sie es online!
quelle
Gaia ,
109 BytesProbieren Sie es online!
Folgt demselben "Algorithmus" wie an anderer Stelle - filtern Sie das Divisor-Powerset nach dem längsten mit Produkt gleich der Zahl und geben Sie seine Länge zurück.
quelle
Muschel , 15 Bytes
TIO Link kommt bald (wenn Dennis zieht)
Grundsätzlich ein Port der @ Emigna 05AB1E-Lösung.
Erläuterung
quelle
C # (Visual C # Interactive Compiler) , 54 Byte
Verwendet den gleichen Ansatz wie die Antworten von @ vrugtehagel und @ JoKing.
Probieren Sie es online!
quelle
Ruby , 34 Bytes
Zeitüberschreitung bei dieser massiven Anzahl, aber schließlich Zeitüberschreitung, wenn auf einem anderen Computer genügend Zeit zur Verfügung steht.
Probieren Sie es online!
quelle