(λ(n)(cadr(argmax cadr((let()(local-require math/number-theory)factorize)n))))
Pruébalo en línea!
(No estoy seguro de si hay un consenso sobre lo que constituye una solución Racket completa, así que voy con la convención de Mathematica de que una función pura cuenta).
Cómo funciona
factorizeda la factorización como una lista de pares: (factorize 108)da '((2 2) (3 3)). El segundo elemento de un par viene dado por cadr, una abreviatura para la composición de car(encabezado de una lista) con cdr(cola de una lista).
Me siento tonto (cadr (argmax cadr list))por encontrar el máximo de los segundos elementos, pero maxno funciona en las listas: (max (map cadr list))no hace lo que queremos. No soy un experto en Racket, así que quizás haya una mejor manera estándar de hacer esto.
Raqueta, 93 bytes
(λ(n)(define(p d m)(if(=(gcd m d)d)(+(p d(/ m d))1)0))(p(argmax(λ(d)(p d n))(range 2 n))n))
Pruébalo en línea!
Cómo funciona
Una versión alternativa que no importa factorizey en su lugar hace todo desde cero, más o menos. La función (p m d)encuentra el poder más alto de desa división my luego solo encontramos el valor más alto de (p n d)para dentre 2y n. (No necesitamos restringir esto a números primos, ya que no habrá un poder compuesto que funcione mejor que los poderes primarios).