Mathematica, 70 69 bytes
1##&@@(Prime[BitXor[PrimePi@#+1,1]-1]^#2&)@@@FactorInteger@#/._@_->1&
Uma função sem nome que pega e retorna um número inteiro. Ele gera um erro na entrada, 1mas ainda calcula o resultado correto.
Explicação
Como de costume, devido a todo o açúcar sintático, a ordem de leitura é um pouco engraçada. Um &nos define certas uma função sem nome e os seus argumentos são referidas por #, #2, #3, etc.
...FactorInteger@#...
Começamos fatorando a entrada. Isso fornece uma lista de pares, {prime, exponent}por exemplo, a entrada 12fornece {{2, 2}, {3, 1}}. Um pouco inconveniente, 1dá {{1, 1}}.
(...&)@@@...
Isso aplica a função à esquerda à lista de números inteiros no nível 1, ou seja, a função é chamada para cada par, passando o primo e o expoente como argumentos separados e, em seguida, retorna uma lista dos resultados. (Isso é semelhante ao mapeamento da função na lista, mas receber dois argumentos separados é mais conveniente do que receber um par.)
...PrimePi@#...
Calculamos o número de primos até e incluindo a entrada (prime) usando o built-in PrimePi. Isso nos dá o índice do primo.
...BitXor[...+1,1]-1...
O resultado é incrementado, XOR'ed com 1e decrementado novamente. Isso troca 1 <-> 2, 3 <-> 4, 5 <-> 6, ..., ou seja, todos os índices baseados em 1. Observe que a entrada 1produzirá 0para a PrimePiqual é mapeada -1nesse processo. Nós vamos lidar com isso mais tarde.
...Prime[...]^#2...
Agora, obtemos o n- ésimo primo (onde n é o resultado da computação anterior), que é o primo corretamente trocado e o elevamos à potência do primo original na fatoração da entrada. Nesse ponto Prime[-1], lançará um erro, mas retornará sem ser avaliado. O poder nesse caso é 1que todo o processo até agora rende {Prime[-1]}entrada 1e uma lista de potências primárias corretas para todas as outras entradas.
1##&@@...
Em seguida, apenas multiplicamos todos os poderes principais. 1##&é um truque de golfe padrão para a Timesfunção. Veja esta dica (seção "Sequências de argumentos") para saber como funciona.
Finalmente, precisamos cuidar das informações 1para as quais todas as opções acima resultaram Prime[-1]. Podemos consertar isso facilmente com uma regra de substituição simples. Lembre-se de que f@xé uma abreviação de f[x]. Apenas queremos corresponder a qualquer expressão dessa forma (já que todos os outros resultados serão inteiros, ou seja, expressões atômicas) e substituí-la por 1:
.../._@_->1
Aqui, /.abreviação de ReplaceAll, _@_é um padrão para qualquer coisa da forma f[x](ou seja, qualquer expressão composta com um único filho) e ->1diz "substituir por 1".