เด็กอยากรู้อยากเห็นการใช้โปรแกรมที่สามารถ factorize 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
นี่คือรหัส - กอล์ฟเพื่อให้โปรแกรมสั้นที่สุดชนะ