Tuvimos un desafío de factorización principal hace un tiempo, pero ese desafío tiene casi seis años y apenas cumple con nuestros requisitos actuales, por lo que creo que es hora de uno nuevo.
Reto
Escriba un programa o función que tome como entrada un número entero mayor que 1 y genere o devuelva una lista de sus factores primos.
Reglas
- La entrada y salida se pueden dar por cualquier método estándar y en cualquier formato estándar.
- Se deben incluir factores duplicados en la salida.
- La salida puede estar en cualquier orden.
- La entrada no será inferior a 2 ni superior a 2 31-1 .
- Se permiten los elementos integrados, pero se recomienda incluir una solución no incorporada.
Casos de prueba
2 -> 2
3 -> 3
4 -> 2, 2
6 -> 2, 3
8 -> 2, 2, 2
12 -> 2, 2, 3
255 -> 3, 5, 17
256 -> 2, 2, 2, 2, 2, 2, 2, 2
1001 -> 7, 11, 13
223092870 -> 2, 3, 5, 7, 11, 13, 17, 19, 23
2147483646 -> 2, 3, 3, 7, 11, 31, 151, 331
2147483647 -> 2147483647
Tanteo
Este es el código de golf , por lo que gana el código más corto en bytes.
Respuestas:
Pyth , 1 byte
Me gustan las posibilidades de Pyth en este desafío.
fuente
Python 2 , 55 bytes
Pruébalo en línea!
fuente
Python 2, 53 bytes
Intenta cada divisor potencial
i
por turno. Sii
es un divisor, lo antepone y se reinicia conn/i
. De lo contrario, intenta el siguiente divisor más alto. Debido a que los divisores se verifican en orden creciente, solo se encuentran los primos.Como programa, para 55 bytes:
fuente
Mathematica
3830 bytes¡Gracias @MartinEnder por 8 bytes!
fuente
FactorInteger[#][[All, 1]]&
? 26 bytesJalea , 2 bytes
Pruébalo en línea!
fuente
Haskell , 48 bytes
Pruébalo en línea! Ejemplo de uso:
(2%) 1001
rendimientos[7,11,13]
.fuente
JavaScript (ES6), 44 bytes
Horriblemente ineficiente debido al hecho de que itera desde 2 hasta cada factor primo, incluido el último. Puede reducir la complejidad del tiempo dramáticamente a un costo de 5 bytes:
fuente
Cubix ,
3732 bytesPruébalo en línea! o Míralo en acción .
fuente
En realidad , 6 bytes
Pruébalo en línea!
Explicación:
fuente
o
ahora, ¿verdad?J, 2 bytes
El cuerpo debe tener al menos 30 caracteres.fuente
MATL , 2 bytes
Pruébalo en línea!
Obligatorio "aburrida respuesta incorporada".
fuente
Japt, 2 bytes
Un incorporado
k
utilizado en la entradaU
. También se refiere a un país.¡Pruébalo en línea!
fuente
sordo , 3 bytes
Este lenguaje es bastante joven y aún no está listo para nada importante, pero puede hacer factorización principal:
Esto esperará la entrada del usuario y luego generará la lista de factores primos.
fuente
MATLAB, 6 bytes
Creo que esto no requiere ninguna explicación.
fuente
Bash + coreutils, 19 bytes
Pruébalo en línea!
fuente
factor|sed s/.*://
. Ademásfactor|cut -d: -f2
(ofactor|cut -d\ -f2
para que coincida con su salida actual) tiene la misma longitud de bytes pero se ejecutará más rápido y usará menos sobrecarga de memoria.factor|cut -d\ -f2-
eliminar el espacio inicial, que es un byte más.Lote, 96 bytes
fuente
Pyke, 1 byte
Pruébalo aquí!
Factores primos incorporados.
fuente
Hexagonía , 58 bytes.
Aún no he terminado de jugar al golf, pero @MartinEnder debería poder destruir esto de todos modos
Imprime factores separados por espacios, con un espacio final
Golfizado:
Dispuesto:
Explicación que viene más tarde.
fuente
05AB1E , 1 byte
Pruébalo en línea!
fuente
CJam, 2 bytes
cjam.aditsu.net / ...
Esta es una función. Martin, parece que tenía sueño.
fuente
C, 92 bytes
Versión sin golf:
fuente
Japt , 1 byte (no competidor)
Pruébalo en línea!
fuente
PHP , 51 bytes
Pruébalo en línea!
fuente
C (gcc) , 51 bytes
Pruébalo en línea!
fuente
Perl 6 ,
7764 bytesIntentalo
Pruébelo (Nota: no tiene suficiente tiempo para terminar)
Una versión mucho más eficiente es un poco más larga con 100 bytes.
Intentalo
Ampliado: (versión de 64 bytes)
fuente
VB.NET, 86 bytes
Tenía esto sentado en algunos programas del Proyecto Euler. Se eliminaron las optimizaciones en aras de la brevedad, y este es el resultado. Naturalmente, VB es muy detallado, por lo que es bastante largo. No estoy contando el espacio en blanco principal. Se puede omitir, pero es más fácil de leer con él.
Esto toma un número entero como parámetro e imprime los factores primos con una coma después. Hay una coma final al final.
fuente
Perl 6 , 51 bytes
Una solución recursiva:
fuente
Java (OpenJDK) , 259 bytes
Pruébalo en línea!
fuente
Ruby, 61 bytes
La versión incorporada más corta que se me ocurra.
fuente
Ruby , 48 bytes
Pruébalo en línea!
Un poco tarde para la fiesta, pero ... ¿por qué no?
fuente