Ciekawy dziecko wykorzystuje program, który może na czynniki liczbę lub wyrażenie do następującej postaci: p1^e1 * p2^e2 * ... * pn^en. Wykładniki równe 1są pomijane np360 = 2^3 * 3^2 * 5
Dziecko wpisuje te dane wyjściowe do programu jako nowe dane wejściowe, ale nie rozumie ^znaku, więc czasami pomija jedną lub więcej z tych, które łączą odpowiednią bazę pierwszą i wykładnik. Na przykład(360 =) 2^3 * 3^2 * 5 => 2^3 * 32 * 5 (= 1280)
Z powodu tych błędów może otrzymać inną faktoryzację, którą może wprowadzić ponownie (pomijając 0 lub więcej ^). Powtarza ten proces, dopóki faktoryzacja już się nie zmieni (być może już go nie ma ^lub poprawnie skopiowała dane wyjściowe).
Powinieneś napisać program lub funkcję, która podając liczbę całkowitą n( n>1) wypisuje wszystkie możliwe liczby w kolejności rosnącej, których faktoryzacją może być ta, z którą skończyło się dziecko (w tym n). Np. Dla danych wejściowych 16możliwe są ostateczne faktoryzacje(16 =) 2^4, (24 =) 2^3 * 3, (23*3 =) 3 * 23
Dane wejściowe:
- wejście jest jedną liczbą całkowitą większą niż
1 - nie zostaną podane dane wejściowe, które wygenerują liczbę wyjściową większą niż
2^31-1 - nie zostaną podane dane wejściowe, które generują więcej niż
1000liczby wyjściowe
Dane wyjściowe:
- lista liczb całkowitych w wygodnej formie dla twojego języka
Przykłady:
Dane wejściowe => Dane wyjściowe
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
To jest golf golfowy, więc wygrywa najkrótszy program.