ในเลขคณิตจำนวนn-smoothโดยที่ n คือจำนวนเฉพาะที่กำหนดจะถูกกำหนดทางคณิตศาสตร์เป็นจำนวนเต็มบวกที่ไม่มีปัจจัยสำคัญมากกว่า n ตัวอย่างเช่น 42 เป็น 7-smooth เพราะปัจจัยสำคัญทั้งหมดมีค่าน้อยกว่าหรือเท่ากับ 7 แต่ 44 ไม่ราบรื่น 7 เพราะมันมี 11 เป็นปัจจัยสำคัญ
กำหนดจำนวนที่ค่อนข้างเรียบเป็นจำนวนโดยไม่มีปัจจัยสำคัญใด ๆ ที่ดีกว่ารากที่สองของตัวเอง ดังนั้นรายการของตัวเลขที่ราบรื่นสวยสามารถกำหนดสูตรดังนี้
- (แก้ไข!) 1 เป็นตัวเลขที่ค่อนข้างราบเรียบเนื่องจากไม่มีปัจจัยที่สมบูรณ์ (โปรดทราบว่าในคำถามเดิมของคำถามนี้มีการยกเว้น 1 อย่างผิดพลาดจากรายการดังนั้นหากคุณแยกออกจากผลลัพธ์คุณจะไม่ถูกทำเครื่องหมายผิด)
- ระหว่าง 4 (= 2 2 ) ถึง 8 ตัวเลขที่ค่อนข้างราบเรียบคือ 2-smooth ซึ่งหมายความว่าพวกเขามี 2 เป็นปัจจัยหลักเท่านั้น
- ระหว่าง 9 (= 3 2 ) ถึง 24 ตัวเลขที่ค่อนข้างราบเรียบคือ 3-smooth และสามารถมี 2s และ 3s ในช่วงเวลาที่เหมาะสมที่สุด
- ระหว่าง 25 (= 5 2 ) ถึง 48 ตัวเลขที่ค่อนข้างราบเรียบนั้นคือ 5-smooth และสามารถมี 2s, 3s, และ 5s ใน factorizations ที่สำคัญของพวกเขา
- ดังนั้นการอัพเกรดเกณฑ์ทุกครั้งที่ถึงจำนวนเฉพาะจำนวนถัดไป
รายการของตัวเลขที่ราบรื่นสวยได้รับการแก้ไขและเริ่มต้นดังนี้: 1, 4, 8, 9, 12, 16, 18, 24, 25, ...
ความท้าทายของคุณคือการเขียนโค้ดที่จะส่งออกตัวเลขเรียบเนียนทั้งหมดและรวมถึง 10,000 (= 100 2 ) ต้องมีตัวคั่นอย่างน้อยหนึ่งตัว (ไม่สำคัญว่าควรเว้นวรรคแบบใดเครื่องหมายจุลภาคขึ้นบรรทัดใหม่อะไร) ระหว่างตัวเลขแต่ละตัวในรายการและหมายเลขถัดไป แต่ไม่เกี่ยวข้องอย่างสมบูรณ์กับอักขระที่ใช้
ตามปกติจำนวนไบต์ที่น้อยที่สุดจะชนะ - แน่นอนว่าการแสดงรายการนั้นจะไม่เป็นประโยชน์กับคุณมากเกินไป โชคดี!
1
)