Una colección de enteros positivos d_1 d_2 ... d_k
es una factorización de un entero positivo n
si
d_1 * d_2 * ... * d_k = n
Cada número entero positivo tiene una factorización prima única , pero en general también tienen factorizaciones en las que algunos de los términos son compuestos. P.ej
12 = 6 * 2 = 4 * 3 = 3 * 2 * 2
Escriba un programa, función, verbo o similar que tome como entrada un solo entero positivo y devuelva o imprima una lista completa de sus factorizaciones distintas. Las factorizaciones pueden producirse en cualquier orden, y sus términos pueden estar en cualquier orden, pero no deben existir permutaciones entre sí. Las factorizaciones pueden no incluir 1
con dos excepciones: para la entrada n
, puede dar la factorización en n*1
lugar de n
; y para la entrada 1
puede dar la factorización en 1
lugar de la lista vacía.
Puede suponer que la entrada estará en el rango de un entero de 32 bits con signo. Si la salida es como una cadena, debe haber una distinción clara entre la delimitación de números dentro de una factorización y la delimitación de las factorizaciones, pero no es necesario (por ejemplo) que los factores se unan con un *
.
Su código debe ser capaz de manejar cualquier entrada válida dentro de los 10 minutos en una máquina de escritorio razonable.
Ejemplos
1 [[]]
or [[1]]
or [[1 1]]
7 [[7]]
or [[7 1]]
or [[1 7]]
12 [[12] [6 2] [4 3] [2 3 2]]
or variants
16 [[2 2 2 2] [2 2 4] [2 8] [4 4] [16]]
or variants
901800900 a list of 198091 factorisations
1338557220 a list of 246218 factorisations
901800900
y en1338557220
algún lugar donde podamos verificarlas? Mi código me está dando factorizaciones 2048 y 1024 para esos números, respectivamente, y no estoy seguro de por qué.