Цікавий дитина використовує програму , яка може факторізовать номер або вираз в наступному вигляді: 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
Це кодовий гольф, тому найкоротша програма виграє.