Inspiriert von dieser Frage zu Math.
Lassen Sie die prime Faktorisierung einer Zahl, n , dargestellt werden als P (n) 2 = a x 3 b x 5 C x ... .
(Verwenden von x als Multiplikationssymbol.)
Dann kann die Anzahl der Teiler von n als D (n) = (a + 1) x (b + 1) x (c + 1) ... dargestellt werden .
Somit kann man leicht sagen , dass die Anzahl von Divisoren von 2N ist D (2n) = (a + 2) x (b + 1) x (C + 1) , ... ,
die Anzahl von Divisoren von 3N ist D (3n =) (a + 1) x (b + 2) x (C + 1) , ... ,
und so weiter.
Herausforderung:
Schreiben Sie ein Programm oder eine Funktion, die diese Eigenschaften verwendet, um n bei bestimmten Divisoreingaben zu berechnen .
Eingang:
Eine Reihe von ganzen Zahlen, nennen wir sie w, x, y, z mit allen folgenden Definitionen:
- Alle Eingänge sind größer als 1 -
w, x, y, z > 1
- x und z sind verschieden -
x<>z
- x und z sind prime -
P(x)=x
,D(x)=2
undP(z)=z
,D(z)=2
- w ist die Anzahl der Teiler von xn -
D(xn)=w
- y ist die Anzahl der Teiler von zn -
D(zn)=y
Für das in der verknüpften Frage angegebene Problem könnte ein Eingabebeispiel sein (28, 2, 30, 3)
. Dies übersetzt zu D(2n)=28
und D(3n)=30
mit n=864
.
Ausgabe:
Eine einzelne Ganzzahl n , die die obigen Definitionen und Eingabebeschränkungen erfüllt. Wenn mehrere Zahlen zu den Definitionen passen, geben Sie die kleinste aus. Wenn keine solche Ganzzahl möglich ist, geben Sie einen Falsey- Wert aus.
Beispiele:
(w, x, y, z) => output
(28, 2, 30, 3) => 864
(4, 2, 4, 5) => 3
(12, 5, 12, 23) => 12
(14, 3, 20, 7) => 0 (or some other falsey value)
(45, 13, 60, 11) => 1872
(45, 29, 60, 53) => 4176
Regeln:
- Es gelten die Standardregeln für Code-Golf und Lücken .
- Es gelten die Standard-Eingabe- / Ausgaberegeln .
- Die eingegebenen Nummern können in beliebiger Reihenfolge angegeben werden. Bitte geben Sie in Ihrer Antwort an, welche Reihenfolge Sie verwenden.
- Eingabenummern können in jedem geeigneten Format vorliegen: durch Leerzeichen getrennt, ein Array, separate Funktionen oder Befehlszeilenargumente usw. - Sie haben die Wahl.
- In ähnlicher Weise sind bei der Ausgabe an STDOUT das umgebende Leerzeichen, nachfolgende Zeilenumbrüche usw. optional.
- Eingabeanalyse und Ausgabeformatierung sind nicht die interessanten Merkmale dieser Herausforderung.
- Im Interesse einer vernünftigen Komplexität und ganzzahliger Überläufe unterliegt die Herausforderungsnummer n Einschränkungen, sodass
1 < n < 100000
Sie sich keine Gedanken über mögliche Antworten außerhalb dieses Bereichs machen müssen.
verbunden
quelle
Antworten:
Gelee ,
1716 BytesDies ist eine Brute-Force-Lösung, die alle möglichen Werte bis zu 100.000 ausprobiert. Probieren Sie es online aus!
Nicht konkurrierende Version
Die neueste Version von Jelly verfügt über eine Fehlerbehebung, mit der der obige Code auf 15 Byte reduziert werden kann .
Probieren Sie es online aus!
Wie es funktioniert
quelle