Uma coleção de números inteiros positivos d_1 d_2 ... d_k
é uma fatoração de um número inteiro positivo n
se
d_1 * d_2 * ... * d_k = n
Cada número inteiro positivo possui uma fatoração primária única , mas em geral eles também possuem fatorações nas quais alguns dos termos são compostos. Por exemplo
12 = 6 * 2 = 4 * 3 = 3 * 2 * 2
Escreva um programa, função, verbo ou similar que tenha como entrada um único número inteiro positivo e retorne ou imprima uma lista completa de suas fatorações distintas. As fatorações podem ser produzidas em qualquer ordem, e seus termos podem estar em qualquer ordem, mas não duas devem ser permutações uma da outra. As fatorações podem não incluir 1
duas exceções: para entrada, n
você pode fornecer a fatoração em n*1
vez de n
; e para entrada, 1
você pode dar a fatoração em 1
vez da lista vazia.
Você pode assumir que a entrada estará no intervalo de um número inteiro de 32 bits assinado. Se a saída for como uma sequência, deve haver uma distinção clara entre a delimitação de números dentro de uma fatoração e a delimitação das fatorações, mas não é necessário (por exemplo) que os fatores sejam unidos a um *
.
Seu código deve ser capaz de lidar com qualquer entrada válida em 10 minutos em uma máquina de desktop razoável.
Exemplos
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
e em1338557220
algum lugar onde podemos verificá-las? Meu código está me fornecendo 2048 e 1024 fatorações para esses números, respectivamente, e não sei por que.