Dado un número entero n >= 2
, genera el mayor exponente en su factorización prima. Esta es la secuencia OEIS A051903 .
Ejemplo
Dejar n = 144
. Su factorización principal es 2^4 * 3^2
. El mayor exponente es 4
.
Casos de prueba
2 -> 1
3 -> 1
4 -> 2
5 -> 1
6 -> 1
7 -> 1
8 -> 3
9 -> 2
10 -> 1
11 -> 1
12 -> 2
144 -> 4
200 -> 3
500 -> 3
1024 -> 10
3257832488 -> 3
Respuestas:
05AB1E , 2 bytes
Pruébalo en línea!
¿Cómo?
fuente
Python 2 ,
625756 bytesPruébalo en línea!
fuente
f=lambda n,k=0:max(k%n-n%(k/n+2)**(k%n)*n,k<n**2and f(n,k+1))
Jalea , 3 bytes
Pruébalo en línea!
Esto también funciona en M . Pruébalo en línea!
fuente
Haskell ,
6160504846 bytes-2 bytes gracias a xnor
Pruébalo en línea!
45 bytes con una importación:
Pruébalo en línea!
fuente
0^
es lindo, pero es más corto para verificar la condición como un booleano.Ohm v2 , 2 bytes
Pruébalo en línea!
¿Explicación?
No.
fuente
Python 2 , 78 bytes
Pruébalo en línea!
-5 gracias a los ovs .
Esta respuesta no hace verificaciones principales. En cambio, aprovecha el hecho de que el máximo exponente de un factor primo será mayor o igual que el exponente de cualquier otro factor en cualquier factorización de un número.
fuente
Japt
-h
,97 bytesIntentalo
fuente
ü
crea sub-matrices de los valores iguales. Se hace también ordenar por valor de primera pero eso no es relevante aquí.Mathematica, 27 bytes
Pruébalo en línea!
fuente
Max@@Last/@FactorInteger@#&
. Lamentablemente, esto no guarda ningún byte.MATL , 4 bytes
Pruébalo en línea!
fuente
Brachylog , 5 bytes
Pruébalo en línea!
Explicación
fuente
Casco , 5 bytes
Pruébalo en línea!
p
- Obtiene los factores primos.g
- Agrupa valores adyacentes.mL
- Obtiene las longitudes de cada grupo.▲
- Máximo.fuente
APL (Dyalog) , 19 bytes
Pruébalo en línea!
¿Cómo?
2pco⎕
- Matriz 2D de factores primos y exponentes1↓
- descartar los factores⌈/
- máximofuente
Javascript 54 bytes
* suponiendo una pila infinita (como en los desafíos de código de golf)
fuente
PARI / GP, 24 bytes
Si no cuento la
n->
parte, son 21 bytes.fuente
Octava , 25 bytes
Pruébalo en línea!
Explicación
factor
produce la matriz de exponentes primos (posiblemente repetidos) La segunda salida demode
da el número de veces que aparece el modo (es decir, la entrada más repetida).fuente
Pyth , 7 bytes
Pruébalo aquí
fuente
eS/LPQP
(7 bytes),eSlM.gkP
(8 bytes).Python 2 ,
9084 bytesPruébalo en línea!
fuente
Gaia , 4 bytes
Pruébalo en línea!
ḋ
- Calcula la factorización prima como pares [primo, exponente] .⌠
- Mapa y recoger el resultado con el valor máximo.)
- Último elemento (exponente).)
- Último elemento (exponente máximo)Gaia , 4 bytes
Pruébalo en línea!
ḋ
- Calcula la factorización prima como pares [primo, exponente] .)¦
- Mapa con el último elemento (exponente).⌉
- Obtiene el elemento máximo.fuente
MY , 4 bytes
Pruébalo en línea!
¿Explicación?
fuente
Octava : 30 bytes
a=factor(x)
devuelve un vector que contiene los factores primos dex
. Este es un vector ordenado en orden ascendente en el que la multiplicación de todos los números en sífactor(x)
producex
tal que cada número en el vector es primo.histc(...,a)
calcula un histograma en el vector de factores primos donde los contenedores son los factores primos. El histograma cuenta cuántas veces hemos visto cada número primo, dando así el exponente de cada número primo. Podemos hacer trampa aquí un poco porque, aunquefactor(x)
devolverá números o bins duplicados, solo uno de los bins capturará la cantidad total de veces que vemos un número primo.max(...)
devuelve así el mayor exponente.Pruébalo en línea!
fuente
Alice , 17 bytes
Pruébalo en línea!
Explicación
Esto es solo un marco para programas aritméticos simples con E / S decimal. El
...
es el programa real, que ya tiene la entrada en la pila y deja la salida en la parte superior de la pila.Alice en realidad tiene incorporados para obtener la factorización prima de un número entero (incluso con pares primos-exponentes), pero el más corto que he encontrado usando esos es 10 bytes más largo que esto.
En cambio, la idea es que dividimos repetidamente una copia de cada factor primo distinto de la entrada, hasta llegar a 1 . El número de pasos que esto toma es igual al mayor exponente principal. Abusaremos del cabezal de la cinta como la variable del contador.
fuente
Julia,
605240 bytes-12 + corrección gracias a Steadybox
fuente
print()
. Además, no pude ejecutar el código en TIO tal como está, supongo que funciona en alguna otra versión del idioma que no está disponible allí. Esto funciona bien en TIO:print(maximum(collect(values(factor(parse(BigInt,readline()))))))
print()
necesita porque la respuesta debe ser un programa completo (que muestra la salida) o una función (que devuelve la salida). De lo contrario, su solución está bien. Parece que puede guardar algunos bytes (y evitar la impresión) de esta manera:f(x)=maximum(collect(values(factor(x))))
En realidad , 4 bytes
Pruébalo en línea!
fuente
Python 2 , 64 bytes
-4 bytes gracias a H.PWiz.
Pruébalo en línea!
Respuesta de Haskell del puerto de H.PWiz . Solo comparto esto porque estoy orgulloso de haber podido entender este fragmento de código Haskell y traducirlo. :PAGS
fuente
range(1,n)
funcionarange(1, n)
produce todos los enteros en [1, n).a
Axioma, 61 bytes
Esta es la primera vez que encuentro que es posible definir la función sin el uso del paréntesis (). En lugar de "f (n) ==" "fn ==" un carácter menos ...
fuente
Raqueta ,
8379 bytesPrué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
factorize
da la factorización como una lista de pares:(factorize 108)
da'((2 2) (3 3))
. El segundo elemento de un par viene dado porcadr
, una abreviatura para la composición decar
(encabezado de una lista) concdr
(cola de una lista).Me siento tonto
(cadr (argmax cadr list))
por encontrar el máximo de los segundos elementos, peromax
no 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
Pruébalo en línea!
Cómo funciona
Una versión alternativa que no importa
factorize
y en su lugar hace todo desde cero, más o menos. La función(p m d)
encuentra el poder más alto ded
esa divisiónm
y luego solo encontramos el valor más alto de(p n d)
parad
entre2
yn
. (No necesitamos restringir esto a números primos, ya que no habrá un poder compuesto que funcione mejor que los poderes primarios).fuente
max
solución estándar es(apply max (map cadr list)
pero(cadr (argmax cadr list))
desafortunadamente es más corta.J, 9 bytes
Máx. De
<./
todos los exponentes primos_&q:
Pruébalo en línea!
fuente
APL (NARS), 15 caracteres, 30 bytes
prueba:
comentario:
fuente