Su tarea es calcular lentamente la exponenciación, con los siguientes pasos:
Dadas dos entradas (en este ejemplo, 4 y 8), debe calcular la exponenciación calculando la ecuación bit a bit. Lo haría 4^8, tendría un mayor valor base (4) y un exponente más pequeño (8). Puedes hacer esto usando más exponenciación y división. Puede dividir el exponente por un valor X (siempre que X sea un divisor primo del exponente) y convertir el valor base ( B ) en B^X. Por ejemplo, puedes hacer:
4^8 = (4 ^ 2)^(8 / 2) = 16^4
He reemplazado X con 2 en la ecuación anterior.
Puede 'simplificar' 16^4aún más, nuevamente con X = 2:
16^4 = (16 ^ 2)^(4 / 2) = 256^2
Y luego finalmente calcular un número (de nuevo X = 2):
256^2 = (256 ^ 2)^(2 / 2) = 65536^1 = 65536
Por lo tanto,
4^8 = 16^4 = 256^2 = 65536
Este es el resultado que debes dar. El separador de salida es un poco flexible, por ejemplo, puede separar las ecuaciones por líneas nuevas o espacios en lugar de =. O bien, puede ponerlos en una lista (pero no debe usar un dígito o el ^carácter como separador).
Como señaló Martin Ender, ^también es flexible. Por ejemplo, puede usar [A, B]o en A**Blugar de A^Ben la salida.
X solo puede ser primo, lo que significa que no puede usar X = 8para llegar directamente a la solución, y los valores de X solo serán factores primos de la segunda entrada (el exponente).
Ejemplos:
(input) -> (output)
4^8 -> 4^8=16^4=256^2=65536
5^11 -> 5^11=48828125
2^15 -> 2^15=32^3=32768 (2^15=8^5=32768 is also a valid output)
Tenga en cuenta que el formato de entrada también es flexible (por ejemplo, puede tomar A \n Bo A Bno A^B. Obviamente, esto no sería un problema si escribe una función tomando dos argumentos.
En el segundo ejemplo, vamos directamente al cálculo, ya que 11es primo y no podemos seguir más pasos.
Puede escribir un programa o una función para resolver esto, y puede imprimir o devolver el valor, respectivamente.
Como este es el código de golf , ¡el código más corto gana!

32^3y8^15tampoco son 512.x^1?Respuestas:
Jalea , 16 bytes
Pruébalo en línea!
La entrada es una lista única
[base, exponent]. El valor de retorno del enlace monádico inferior es una lista de listas, como un programa completo se imprime una representación de esa lista, por ejemplo,2^15=8^5=32768^1se imprime como:¿Cómo?
Podría formatearse como una cuadrícula de 2 bytes mediante un seguimiento
µG, por ejemplo:... o completamente formateado, incluido el recorte de
^1, para 9, con un finalj€”^j”=ṖṖ, por ejemplo:fuente
JavaScript (ES7), 55 bytes
Usos
,en lugar de=(2^15,8^5,32768).Casos de prueba
Mostrar fragmento de código
Nota: el fragmento utiliza en
Math.powlugar de la**compatibilidad entre navegadores.fuente
05AB1E ,
232217 bytesGuardado 5 bytes al notar el formato de salida flexible.
Pruébalo en línea!
Explicación
Ejemplo para
2^15fuente
C,
125123 + 4 (-lm) =129127 bytesToma un doble y un entero.
Pruébalo en línea!
fuente
Haskell, 64 bytes
Ejemplo de uso:
2 # 32->[[2,32],[4,16],[16,8],[256,4],[65536,2],[4294967296]]. Pruébalo en línea! .Cómo funciona:
fuente
Bash + GNU utilidades, 82
Script de shell recursivo. Esto no parece funcionar en TIO, pero funciona bien cuando se guarda como un script y se ejecuta:
fuente