Định lý Gabriel Lame giới hạn số bước bằng log (1 / sqrt (5) * (a + 1/2)) - 2, trong đó cơ sở của nhật ký là (1 + sqrt (5)) / 2. Đây là trường hợp xấu nhất cho thuật toán và nó xảy ra khi đầu vào là các số Fibanocci liên tiếp.
Một ràng buộc tự do hơn một chút là: log a, trong đó cơ sở của log là (sqrt (2)) được hàm ý bởi Koblitz.
Đối với mục đích mật mã, chúng tôi thường xem xét độ phức tạp theo từng bit của các thuật toán, có tính đến kích thước bit được cho xấp xỉ bằng k = loga.
Dưới đây là phân tích chi tiết về độ phức tạp theo bit của Thuật toán Euclid:
Mặc dù trong hầu hết các tài liệu tham khảo, độ phức tạp theo bit của Thuật toán Euclid được đưa ra bởi O (loga) ^ 3, nhưng tồn tại một giới hạn chặt chẽ hơn là O (loga) ^ 2.
Xem xét; 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
quan sát thấy: a = r0> = b = r1> r2> r3 ...> rm-1> rm> 0 .......... (1)
và rm là ước chung lớn nhất của a và b.
Bằng một tuyên bố trong cuốn sách của Koblitz (Một khóa học về Lý thuyết số và Mật mã) có thể được chứng minh rằng: ri + 1 <(ri-1) / 2 ................. ( 2)
Một lần nữa trong Koblitz, số phép toán bit cần thiết để chia một số nguyên dương k-bit cho một số nguyên dương l-bit (giả sử k> = l) được cho là: (k-l + 1) .l ...... ............. (3)
Theo (1) và (2) số ước là O (loga) và do (3) tổng độ phức tạp là O (loga) ^ 3.
Bây giờ điều này có thể được giảm xuống O (loga) ^ 2 bởi một nhận xét trong Koblitz.
coi ki = logri +1
bởi (1) và (2) ta có: ki + 1 <= ki cho i = 0,1, ..., m-2, m-1 và ki + 2 <= (ki) -1 cho i = 0 , 1, ..., m-2
và bởi (3) tổng chi phí của m ước số được giới hạn bởi: SUM [(ki-1) - ((ki) -1))] * ki cho i = 0,1,2, .., m
sắp xếp lại cái này: SUM [(ki-1) - ((ki) -1))] * ki <= 4 * k0 ^ 2
Vì vậy, độ phức tạp theo từng bit của Thuật toán Euclid là O (loga) ^ 2.
a%b
. Trường hợp xấu nhất là khia
vàb
là các số Fibonacci liên tiếp.