คำแถลงปัญหา
กำหนดชุดเฉพาะช่วงเวลาที่ต่อเนื่องกัน (ไม่จำเป็นต้องรวม 2) สร้างผลิตภัณฑ์ของการรวมกันของพลังแรกของช่วงเวลาเหล่านี้ - เช่นไม่มีการซ้ำ - และ 1 ตัวอย่างเช่นให้ชุด {2, 3, 5, 7} คุณสร้าง {1, 2, 3, 5, 6, 7, 10, 14, 15, 21, 30, 35, 42, 70, 105, 210} เพราะ:
1 = 1
2 = 2
3 = 3
5 = 5
6 = 2 x 3
7 = 7
10 = 2 x 5
14 = 2 x 7
15 = 3 x 5
21 = 3 x 7
30 = 2 x 3 x 5
35 = 5 x 7
42 = 2 x 3 x 7
70 = 2 x 5 x 7
105 = 3 x 5 x 7
210 = 2 x 3 x 5 x 7
โปรดทราบว่าหากความสำคัญของชุดอินพุตของคุณคือ k สิ่งนี้จะให้สมาชิก 2 ^ k ในชุดเอาต์พุตของคุณ
กฎ / เงื่อนไข
- คุณสามารถใช้ภาษาใดก็ได้ มีจุดมุ่งหมายเพื่อนับจำนวนตัวอักษรที่เล็กที่สุดของซอร์สโค้ด
- โซลูชันของคุณต้องเป็นโปรแกรมที่สมบูรณ์หรือฟังก์ชันที่สมบูรณ์ ฟังก์ชั่นสามารถระบุชื่อได้ (หากภาษาของคุณรองรับฟังก์ชั่นที่ไม่ระบุชื่อ)
- โซลูชันของคุณควรสนับสนุนผลิตภัณฑ์อย่างน้อย 2 ^ 31 ไม่ต้องกังวลเกี่ยวกับการตรวจจับหรือจัดการจำนวนเต็มล้นหากคุณส่งผ่านหมายเลขซึ่งผลิตภัณฑ์ดีเกินกว่าที่จะแสดงได้ อย่างไรก็ตามโปรดระบุขีด จำกัด ของการคำนวณของคุณ
- คุณอาจยอมรับรายการหรือชุดและสร้างรายการหรือชุด คุณอาจสมมติว่าอินพุตถูกเรียงลำดับ แต่คุณไม่จำเป็นต้องสร้างเอาต์พุตที่เรียงลำดับ
พื้นหลัง
มีประโยชน์เมื่อใดหรือทำไม หนึ่งในสถานที่มันเป็นประโยชน์มากในการสร้างตารางของตัวคูณที่จะแข่งขันในแบบคู่ขนานในขั้นตอนวิธีการจำนวนเต็มแฟรู้จักกันในนามสแควร์ Forms ตัวประกอบ. ที่นั่นแต่ละตัวคูณคี่ที่คุณพยายามลดความน่าจะเป็นของอัลกอริทึมที่ล้มเหลว ดังนั้นด้วยชุดของการสร้างช่วงเวลา {3, 5, 7, 11} ซึ่งสร้างชุดของตัวคูณการทดลอง 16 ตัวเพื่อการแข่งขันแบบขนานอัลกอริทึมจะล้มเหลวประมาณ 2 ^ –16 ของเวลาในการ semiprimes อย่างหนัก การเพิ่ม 13 ลงในรายการ primes สร้างชุดของตัวคูณการทดลอง 32 ชุดซึ่งช่วยลดโอกาสที่จะล้มเหลวได้ประมาณ 2 ^ –32 ทำให้ได้ผลลัพธ์ที่ดีขึ้นอย่างมากโดยไม่มีค่าใช้จ่ายในการคำนวณเพิ่มเติม โดยเฉลี่ยมันยังคงหาคำตอบในจำนวนขั้นตอนเดียวกันทั้งหมด)