Цікавий дитина використовує програму , яка може факторізовать номер або вираз в наступному вигляді: p1^e1 * p2^e2 * ... * pn^en
. Експоненти, що дорівнюють 1
, опущені, напр360 = 2^3 * 3^2 * 5
Малюк вводить цей вихід у програму як новий вхід, але вона не розуміє ^
знаку, тому іноді пропускає одну або декілька з тих, що поєднують відповідну основну базу і показник. Напр(360 =) 2^3 * 3^2 * 5 => 2^3 * 32 * 5 (= 1280)
Через ці помилки вона може отримати іншу факторизацію, яку вона може ввести знову (пропускаючи 0 або більше ^
значень). Вона повторює процес, поки факторизація більше не зміниться (можливо, більше немає ^
або вона скопіювала вихід правильно).
Ви повинні написати програму або функцію, яка дала ціле число n
( n>1
), що виводить усі можливі числа у порядку зростання, чинником якого може бути той, у кого дитина закінчився (у тому числі n
). Наприклад, для введення 16
можливі кінцеві факторизації(16 =) 2^4, (24 =) 2^3 * 3, (23*3 =) 3 * 23
Деталі введення:
- вхід на одне ціле число більший за
1
- не буде введено жодного вводу, який генерує вихідний номер більше, ніж
2^31-1
- не буде введено жодного вводу, який генерує більше, ніж
1000
вихідні числа
Вихідні дані:
- список цілих чисел у зручній для вашої мови формі
Приклади:
Вхід => Вихід
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
Це кодовий гольф, тому найкоротша програма виграє.