Um garoto curioso usa um programa que pode fatorar um número ou uma expressão na seguinte forma: p1^e1 * p2^e2 * ... * pn^en
. Os expoentes iguais a 1
são omitidos, por exemplo360 = 2^3 * 3^2 * 5
A criança digita essa saída no programa como uma nova entrada, mas ela não entende o ^
sinal; por vezes, ignora um ou mais daqueles que concatenam a base principal e o expoente correspondentes. Por exemplo(360 =) 2^3 * 3^2 * 5 => 2^3 * 32 * 5 (= 1280)
Devido a esses erros, ela pode obter uma fatoração diferente, que pode inserir novamente (com o pulo de 0 ou mais ^
). Ela repete o processo até que a fatoração não mude mais (talvez não exista mais ^
ou ela copiou a saída corretamente).
Você deve escrever um programa ou função que, dado um número inteiro n
( n>1
), produza todos os números possíveis em ordem crescente, cuja fatoração pode ser aquela com a qual o garoto terminou (inclusive n
). Por exemplo, para entrada, 16
as possíveis fatorações finais são(16 =) 2^4, (24 =) 2^3 * 3, (23*3 =) 3 * 23
Detalhes da entrada:
- entrada é um único inteiro maior que
1
- nenhuma entrada será fornecida, o que gera um número de saída maior que
2^31-1
- nenhuma entrada será fornecida, o que gera mais do que
1000
números de saída
Detalhes da saída:
- uma lista de números inteiros de forma conveniente para o seu idioma
Exemplos:
Entrada => Saída
11 => 11
16 => 16 24 69
360 => 140 360 770 1035 1219 1280 2875 3680
605 => 560 605 840 2415
2048 => 211 2048
58564 => 230 456 1311 2508 9975 12768 13794 20748 58564 114114 322102
Este é o código-golfe, e o programa mais curto vence.