Un ragazzo curioso utilizza un programma che può fattorizzare un numero o un'espressione nella forma seguente: p1^e1 * p2^e2 * ... * pn^en
. Gli esponenti uguali a 1
sono omessi ad es360 = 2^3 * 3^2 * 5
La bambina digita questo output nel programma come nuovo input ma non capisce il ^
segno, quindi a volte salta uno o più di quelli che concatenano la corrispondente base-base ed esponente. Per esempio(360 =) 2^3 * 3^2 * 5 => 2^3 * 32 * 5 (= 1280)
A causa di questi errori potrebbe avere una diversa fattorizzazione che può inserire nuovamente (saltando 0 o più ^
). Ripete il processo fino a quando la fattorizzazione non cambia più (forse non ce ne sono più ^
o ha copiato correttamente l'output).
Dovresti scrivere un programma o una funzione che fornisca un numero intero n
( n>1
) genera tutti i numeri possibili in ordine crescente la cui fattorizzazione potrebbe essere quella con cui il bambino ha finito (incluso n
). Ad esempio per l'input sono 16
possibili fattorizzazioni finali(16 =) 2^4, (24 =) 2^3 * 3, (23*3 =) 3 * 23
Dettagli di input:
- l'input è un singolo intero più grande di
1
- non verrà fornito alcun input che generi un numero di output maggiore di
2^31-1
- non verrà fornito alcun input che generi più
1000
numeri di output
Dettagli di uscita:
- un elenco di numeri interi in una comoda forma per la tua lingua
Esempi:
Input => Output
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
Si tratta di code-golf, quindi vince il programma più breve.