Un poder perfecto es un número de la forma a**b, dónde a>0y b>1.
Por ejemplo, 125es un poder perfecto porque se puede expresar como 5**3.
Objetivo
Su tarea es escribir un programa / función que encuentre la nenésima potencia perfecta, dado un entero positivo n.
Especificaciones
- El primer poder perfecto es
1(que es1**2). - Entrada / salida en cualquier formato razonable.
- Se permiten empotrados .
Más información
Puntuación
Este es el código de golf . La solución más corta en bytes gana.
Casos de prueba
input output
1 1
2 4
3 8
4 9
5 16
6 25
7 27
8 32
9 36
10 49
code-golf
arithmetic
number-theory
Monja permeable
fuente
fuente

Respuestas:
Jalea , 11 bytes
Pruébalo en línea! .
Antecedentes
Cada entero positivo k se puede factorizar únicamente como el producto de las potencias de los primeros m primos, es decir, k = p 1 α 1 ⋯ p m α m , donde α m > 0 .
Tenemos que a b ( b> 1 ) para algún entero positivo a si y solo si b es un divisor de todos los exponentes α j .
Por lo tanto, un entero k> 1 es una potencia perfecta si y solo si mcd (α 1 , ⋯, α m ) ≠ 1 .
Cómo funciona
fuente
a_n > 0?" Me parece que en la factorización para 21 ^ 2 los exponentes para p = 2 y p = 5 son cero.Mathematica, 34 bytes
Genera un n × n matriz A ij = i 1+ j , la aplana, y devuelve el n -ésimo elemento.
fuente
CJam, 16 bytes
Pruébalo aquí.
Explicación
Utiliza una idea similar a la respuesta de Mationica de LegionMammal.
fuente
Octava,
573130 bytesAcabo de notar nuevamente que Octave no necesita
ndgrid(mientras que Matlab sí) =)fuente
05AB1E , 12 bytes
Código:
Utiliza la codificación CP-1252 . Pruébalo en línea! .
fuente
Sage (versión 6.4, probablemente también otras):
6463Crea una función lambda que devuelve
nel poder perfecto. Confiamos en el hecho de que se encuentra dentro de los primerosn^2enteros. (El1+n^2es necesario paran=1,2. El0+kbit es necesario convertirint(k)aInteger(k).)Byte apagado para
xrange->range, gracias Dennis.Solo un hecho divertido:
0es un poder perfecto para los estándares de Sage, afortunadamente, porque entonces1es el primer elemento de la lista, no el 0º :)fuente
is_perfect_power()Pyth -
1211 bytesEnfoque obvio, solo pasa y verifica todos los números.
Test Suite .
fuente
MATL, 9 bytes
Pruébalo en línea
Este es un puerto de la solución Octave de Flawr para MATL, crea la matriz de potencias
n^(n+1)y obtén lanenésima.fuente
Julia
6432 bytesEsta es una función anónima que acepta un entero y devuelve un entero. Para llamarlo, asígnelo a una variable.
La idea aquí es la misma que en la respuesta Mathematica de LegionMammal : Tomamos el producto externo de los enteros 1 a n con 2 a n + 1, colapsamos la matriz resultante en forma de columna, tomamos elementos únicos, ordenamos y obtenemos el n º elemento .
Pruébalo en línea! (incluye todos los casos de prueba)
fuente
JavaScript (ES6), 87
Menos golf
Prueba
fuente
En realidad, 18 bytes (no competitivos)
Pruébalo en línea! (puede no funcionar debido a la necesidad de una actualización)
Esta solución no es competitiva porque solucioné un error
Edespués de publicar este desafío.Explicación:
fuente
> <>, 108 bytes
Este programa requiere que el número de entrada esté presente en la pila antes de ejecutarse.
¡Se necesitó mucho para reducir el número de bytes desperdiciados a 7!
Después de una verificación para ver si la entrada es
1, el programa verifica cada númeron, desde 4 por turno para ver si es una potencia perfecta. Hace esto comenzando cona=b=2. Sia^b == n, hemos encontrado un poder perfecto, entonces disminuya el número de poderes perfectos que quedan por encontrar; si ya hemos encontrado el número correcto, salida.Si
a^b < n,bse incrementa. Sia^b > n,ase incrementa. Entonces, sia == n, hemos descubierto quenno es una potencia perfecta, así que incrementen, reinicieayb.fuente
J, 29 bytes
Basado en el método de @ LegionMammal978 .
Uso
Explicación
fuente
JavaScript (ES7), 104 bytes
Funciona calculando todas las potencias no mayores que n², ordenando la lista resultante y tomando el enésimo elemento.
fuente
Java, 126
fuente