Jelly , 13 personajes significativos, desafío de postdates de lenguaje
R µ ọḊ *@Ḋ ċ >2 µ Ðf
Pruébalo en línea!
Todo el espacio en blanco aquí es insignificante. Lo usé para mostrar la estructura de mi respuesta, como la pregunta pregunta.
Así es como funciona:
R µ ọḊ *@Ḋ ċ >2 µ Ðf
R Ðf Find all numbers n from 1 to the input, such that:
µ µ (grouping marks, like {} in C)
Ḋ Ḋ Take the range from 2 to n
ọ Find the number of times each divides n
*@ Raise the range from 2 to n to these powers
ċ Count the number of times n appears
>2 and the result must be greater than 2
Entonces, por ejemplo, al probar n = 256, verificamos el número de veces que cada uno de los números del 2 al 256 se divide en 256. Los únicos números que se dividen más de una vez son 2 (que divide 8 veces), 4 (que divide 4 veces), 8 (que divide dos veces) y 16 (que divide dos veces). Entonces, cuando aumentamos el número de divisiones a los poderes determinados allí, obtenemos:
2⁸, 3, 4⁴, 5, 6, 7, 8², 9, 10, 11, 12, 13, 14, 15, 16², 17, ..., 255, 256
Esto produce el valor original, 256, varias veces igual a la forma en que 256 es una potencia perfecta, más uno (el último elemento produce 256 porque 256 = 256¹). Entonces, si vemos 256 más de dos veces en la matriz (y lo hacemos en este caso; 8² es 64 pero los otros elementos "interesantes" producen 256), debe ser una potencia perfecta.