4
เหตุใดธาร (a, d, n) จึงเร็วกว่า ** d% n มาก
ฉันกำลังพยายามใช้การทดสอบพื้นฐานของมิลเลอร์ - ราบินและรู้สึกงงว่าทำไมจึงใช้เวลานานมาก (> 20 วินาที) สำหรับตัวเลขขนาดกลาง (~ 7 หลัก) ในที่สุดฉันก็พบว่าบรรทัดของโค้ดต่อไปนี้เป็นที่มาของปัญหา: x = a**d % n (ที่a, dและnทุกคนที่คล้ายกัน แต่ไม่เท่ากัน, ตัวเลขขนาดกลาง**เป็นผู้ดำเนินการยกกำลังและ%เป็นผู้ดำเนินการแบบโมดูโล) ที่ จากนั้นฉันก็ลองแทนที่ด้วยสิ่งต่อไปนี้: x = pow(a, d, n) และเมื่อเปรียบเทียบแล้วมันแทบจะเกิดขึ้นในทันที สำหรับบริบทนี่คือฟังก์ชันดั้งเดิม: from random import randint def primalityTest(n, k): if n < 2: return False if n % 2 == 0: return False …
110
python
performance
pypy