Mathematica, 70 69 Bytes
1##&@@(Prime[BitXor[PrimePi@#+1,1]-1]^#2&)@@@FactorInteger@#/._@_->1&
Eine unbenannte Funktion, die eine Ganzzahl annimmt und zurückgibt. Bei der Eingabe wird ein Fehler 1ausgegeben, das korrekte Ergebnis wird jedoch berechnet.
Erläuterung
Aufgrund des syntaktischen Zuckers ist die Lesereihenfolge wie immer ein bisschen lustig. Ein &auf der rechten Seite definiert eine unbenannte Funktion und ihre Argumente werden bezeichnet durch #, #2, #3usw.
...FactorInteger@#...
Wir beginnen mit der Berücksichtigung der Eingabe. Dies gibt eine Liste von Paaren an, {prime, exponent}zB 12gibt die Eingabe {{2, 2}, {3, 1}}. Etwas ungünstig, 1gibt {{1, 1}}.
(...&)@@@...
Dies wendet die Funktion auf der linken Seite auf die Liste der Ganzzahlen auf Ebene 1 an, dh, die Funktion wird für jedes Paar aufgerufen, wobei Prim und Exponent als separate Argumente übergeben werden, und gibt dann eine Liste der Ergebnisse zurück. (Dies ähnelt der Zuordnung der Funktion über die Liste, aber das Empfangen von zwei separaten Argumenten ist bequemer als das Empfangen eines Paares.)
...PrimePi@#...
Wir berechnen die Anzahl der Primzahlen bis einschließlich der (Prim) -Eingabe mit Hilfe der eingebauten Funktion PrimePi. Dies gibt uns den Index der Primzahl.
...BitXor[...+1,1]-1...
Das Ergebnis wird inkrementiert, mit XOR verknüpft 1und erneut dekrementiert. Dies sind Swaps 1 <-> 2, 3 <-> 4, 5 <-> 6, ..., also alle 1-basierten Indizes. Man beachte , dass Eingang 1ergeben wird 0für PrimePiwelche dann abgebildet -1in diesem Prozess. Wir werden uns später darum kümmern.
...Prime[...]^#2...
Wir erhalten nun die n- te Primzahl (wobei n das Ergebnis der vorherigen Berechnung ist), die die korrekt vertauschte Primzahl ist, und erhöhen sie bei der Faktorisierung der Eingabe auf die Potenz der ursprünglichen Primzahl. An diesem Punkt Prime[-1]wird ein Fehler ausgegeben, der sich jedoch nicht ausgewertet zurückgibt. Die Leistung in diesem Fall ist 1so, dass der gesamte bisherige Prozess {Prime[-1]}für die Eingabe 1und eine Liste der korrekten Primleistungen für alle anderen Eingaben ergibt .
1##&@@...
Als nächstes multiplizieren wir einfach alle Primkräfte. 1##&ist ein Standard-Golf-Trick für die TimesFunktion. In diesem Tipp (Abschnitt "Folgen von Argumenten") erfahren Sie, wie es funktioniert.
Schließlich müssen wir uns um die Eingabe kümmern, 1für die alle oben genannten Ergebnisse erzielt wurden Prime[-1]. Wir können das mit einer einfachen Ersetzungsregel leicht beheben. Denken Sie daran, das f@xist die Abkürzung für f[x]. Wir wollen nur einen Ausdruck dieser Form zuordnen (da alle anderen Ergebnisse Ganzzahlen sind, dh atomare Ausdrücke) und ihn durch Folgendes ersetzen 1:
.../._@_->1
Hier /.ist kurz für ReplaceAll, _@_ist ein Muster für alles von der Form f[x](dh jeder zusammengesetzte Ausdruck mit einem einzelnen Kind) und ->1sagt "Ersetzen durch 1".