Mathematica, 70 69 octets
1##&@@(Prime[BitXor[PrimePi@#+1,1]-1]^#2&)@@@FactorInteger@#/._@_->1&
Une fonction sans nom qui prend et retourne un entier. Il renvoie une erreur en entrée 1mais calcule toujours le résultat correct.
Explication
Comme d'habitude, en raison de tout le sucre syntaxique, l'ordre de lecture est un peu drôle. Un &sur les définit à droite une fonction sans nom et ses arguments sont désignés par #, #2, #3, etc.
...FactorInteger@#...
Nous commençons par factoriser l'entrée. Cela donne une liste de paires, {prime, exponent}par exemple l'entrée 12donne {{2, 2}, {3, 1}}. Un peu gênant, 1donne {{1, 1}}.
(...&)@@@...
Cela applique la fonction de gauche à la liste des entiers au niveau 1, c'est-à-dire que la fonction est appelée pour chaque paire, en passant le premier et l'exposant en tant qu'arguments séparés, puis renvoie une liste des résultats. (Cela revient à mapper la fonction sur la liste, mais recevoir deux arguments distincts est plus pratique que recevoir une paire.)
...PrimePi@#...
Nous calculons le nombre de nombres premiers jusqu'à et y compris l'entrée (principale) à l'aide de la fonction intégrée PrimePi. Cela nous donne l'indice du premier.
...BitXor[...+1,1]-1...
Le résultat est incrémenté, XOR avec 1et décrémenté à nouveau. Ces swaps 1 <-> 2, 3 <-> 4, 5 <-> 6, ..., c'est-à-dire tous les indices basés sur 1. Notez que l'entrée 1donnera 0pour PrimePilaquelle est ensuite mappé -1dans ce processus. Nous y reviendrons plus tard.
...Prime[...]^#2...
Nous obtenons maintenant le n ème premier (où n est le résultat du calcul précédent), qui est le premier correctement échangé, et le portons à la puissance du premier original dans la factorisation de l'entrée. À ce stade Prime[-1], une erreur sera lancée, mais elle se renverra sans évaluation. Dans ce cas, la puissance est 1telle que l'ensemble du processus jusqu'à présent donne {Prime[-1]}une entrée 1et une liste de puissances principales correctes pour toutes les autres entrées.
1##&@@...
Ensuite, nous multiplions simplement tous les pouvoirs principaux. 1##&est une astuce de golf standard pour la Timesfonction. Voir cette astuce (section "Séquences d'arguments") pour savoir comment cela fonctionne.
Enfin, nous devons prendre soin de la contribution 1pour laquelle tout ce qui précède a abouti Prime[-1]. Nous pouvons facilement résoudre ce problème avec une simple règle de remplacement. N'oubliez pas que f@xc'est court pour f[x]. Nous voulons juste faire correspondre n'importe quelle expression de cette forme (puisque tous les autres résultats seront des entiers, c'est-à-dire des expressions atomiques), et le remplacer par un 1:
.../._@_->1
Ici, /.est l'abréviation de ReplaceAll, _@_est un modèle pour n'importe quoi de la forme f[x](c'est-à-dire toute expression composée avec un seul enfant) et ->1dit "remplacer par 1".