ทฤษฎีบทของ Gabriel Lame กำหนดจำนวนขั้นตอนตามบันทึก (1 / sqrt (5) * (a + 1/2)) - 2 โดยที่ฐานของบันทึกคือ (1 + sqrt (5)) / 2 นี่เป็นสถานการณ์ที่เลวร้ายที่สุดสำหรับอัลกอริทึมและจะเกิดขึ้นเมื่ออินพุตเป็นตัวเลข Fibanocci ที่ต่อเนื่องกัน
ขอบเขตที่เสรีกว่าเล็กน้อยคือ: log a โดยที่ฐานของบันทึกคือ (sqrt (2)) เป็นนัยโดย Koblitz
สำหรับวัตถุประสงค์ในการเข้ารหัสเรามักจะพิจารณาความซับซ้อนระดับบิตของอัลกอริทึมโดยคำนึงถึงขนาดบิตที่กำหนดโดย k = loga
นี่คือการวิเคราะห์โดยละเอียดเกี่ยวกับความซับซ้อนระดับบิตของ Euclid Algorithm:
แม้ว่าในการอ้างอิงส่วนใหญ่ความซับซ้อนระดับบิตของ Euclid Algorithm จะได้รับจาก O (loga) ^ 3 แต่ก็มีขอบเขตที่แน่นกว่าซึ่งก็คือ O (loga) ^ 2
พิจารณา; r0 = a, r1 = b, r0 = q1.r1 + r2 . . , ri-1 = qi.ri + ri + 1,. . . , rm-2 = qm-1.rm-1 + rm rm-1 = qm.rm
สังเกตว่า: a = r0> = b = r1> r2> r3 ... > rm-1> rm> 0 .......... (1)
และ rm เป็นตัวหารร่วมที่ยิ่งใหญ่ที่สุดของ a และ b
โดยการอ้างสิทธิ์ในหนังสือของ Koblitz (A course in number Theory and Cryptography) สามารถพิสูจน์ได้ว่า: ri + 1 <(ri-1) / 2 ................. ( 2)
อีกครั้งใน Koblitz จำนวนการดำเนินการบิตที่จำเป็นในการหารจำนวนเต็มบวก k บิตด้วยจำนวนเต็มบวก l-bit (สมมติว่า k> = l) ได้รับเป็น: (k-l + 1) .l ...... ............. (3)
โดย (1) และ (2) จำนวนตัวหารคือ O (loga) และโดย (3) ความซับซ้อนทั้งหมดคือ O (loga) ^ 3
ตอนนี้อาจลดลงเป็น O (loga) ^ 2 โดยคำพูดใน Koblitz
พิจารณา ki = logri +1
โดย (1) และ (2) เรามี: ki + 1 <= ki สำหรับ i = 0,1, ... , m-2, m-1 และ ki + 2 <= (ki) -1 สำหรับ i = 0 , 1, ... , ม -2
และโดย (3) ต้นทุนรวมของตัวหารม. ล้อมรอบด้วย: SUM [(ki-1) - ((ki) -1))] * ki สำหรับ i = 0,1,2, .. , m
การจัดเรียงสิ่งนี้ใหม่: SUM [(ki-1) - ((ki) -1))] * ki <= 4 * k0 ^ 2
ดังนั้นความซับซ้อนระดับบิตของอัลกอริทึมของ Euclid คือ O (loga) ^ 2
a%b
. กรณีที่เลวร้ายที่สุดคือเมื่อใดa
และb
เป็นหมายเลขฟีโบนักชีติดต่อกัน