งานคือการหาปัจจัยที่ไม่สำคัญของจำนวนประกอบ
เขียนโค้ดที่ค้นหาปัจจัยที่ไม่สำคัญของหมายเลขคอมโพสิตโดยเร็วที่สุดเท่าที่เป็นไปได้ภายใต้รหัสของคุณซึ่งมีความยาวไม่เกิน 140 ไบต์ ผลลัพธ์ควรเป็นปัจจัยที่คุณพบ
รหัสของคุณสามารถรับอินพุตและให้เอาต์พุตในวิธีที่สะดวกรวมถึงตัวอย่างเช่นอาร์กิวเมนต์ของฟังก์ชัน
กรณีทดสอบที่แสดงรายการปัจจัยทั้งหมด (คุณจะต้องส่งออกหนึ่งรายการเท่านั้น)
187: 11 17
1679: 23 73
14369648346682547857: 1500450271 9576890767
34747575467581863011: 3628273133 9576890767
52634041113150420921061348357: 2860486313 5463458053 3367900313
82312263010898855308580978867: 264575131106459 311111111111113
205255454905325730631914319249: 2860486313 71755440315342536873
1233457775854251160763811229216063007: 1110111110111 1000000000063 1111111999999
1751952685614616185916001760791655006749: 36413321723440003717 48112959837082048697
ฉันจะไม่ให้คะแนนคำตอบของคุณในกรณีทดสอบที่ยุ่งยากดังต่อไปนี้ซึ่งอาจเป็นที่สนใจสำหรับการทดสอบ:
513231721363284898797712130584280850383: 40206835204840513073 12764787846358441471
คะแนน
คะแนนของคุณคือเวลารวมในการแยกตัวประกอบของกรณีทดสอบทั้งหมดข้างต้นด้วยค่าปรับ 10 นาทีสำหรับการแยกตัวประกอบแต่ละตัวที่ล้มเหลว (ทั้งหมดถูกปัดเศษเป็นวินาทีที่ใกล้เคียงที่สุด) รหัสของคุณควรใช้กับเลขจำนวนเต็มอื่น ๆ ด้วยซึ่งนั่นก็ไม่ได้เป็นแค่คำตอบที่ยาก
ฉันจะหยุดโค้ดของคุณหลังจาก 10 นาที
ถ้าคนสองคนได้คะแนนเท่ากันคำตอบแรกจะชนะ
ข้อ จำกัด
รหัสของคุณไม่สามารถใช้ฟังก์ชัน builtin หรือ library ที่ดำเนินการแยกตัวเป็นจำนวนเต็มได้ คุณสามารถสมมติว่าอินพุตใช้เวลาน้อยกว่า 256 บิต หมายเลขอินพุตทั้งหมดจะถูกรวม
ฉันจะใช้เวลาอย่างไร
ฉันจะรันtime ./myprog
บนระบบ Ubuntu เพื่อกำหนดเวลาดังนั้นโปรดจัดหาโปรแกรมที่สมบูรณ์เพื่อให้ฉันใช้งานซึ่งรวมถึงฟังก์ชั่นที่คุณกำหนดไว้
หมายเหตุสำหรับภาษาที่รวบรวม
เวลารวบรวมจะต้องใช้เวลาไม่เกิน 1 นาทีบนเครื่องของฉัน
เป็นไปได้จริงหรือ
หากคุณเพิกเฉยต่อข้อ จำกัด ของพื้นที่ว่างแต่ละอันสามารถแยกตัวประกอบในเวลาน้อยกว่า 2 วินาทีบนคอมพิวเตอร์ของฉันโดยใช้รหัส Python + pypy อย่างแท้จริง
ดังนั้นอัลกอริทึมแฟคตอริ่งที่ไม่สำคัญคืออะไร
อัลกอริทึม Rho ของ Pollardนั้นรวดเร็วและเหมาะสำหรับการเล่นกอล์ฟ แน่นอนว่ายังมีวิธีอื่นอีกมากในการแยกจำนวนเต็มเช่นกัน
ได้เร็วขึ้นเป็นตะแกรงกำลังสอง ดูเหมือนจะเป็นความท้าทายที่ร้ายแรงที่จะบีบให้มีขนาด 140 ไบต์
คะแนนชั้นนำ
- SEJPMโทษ 10 นาทีสำหรับกรณีทดสอบสุดท้าย + 16 วินาทีในHaskell
2
หรือ2, 2
?
2 ** 1024
อย่างไร