Il teorema di Gabriel Lame delimita il numero di passi per log (1 / sqrt (5) * (a + 1/2)) - 2, dove la base del logaritmo è (1 + sqrt (5)) / 2. Questo è per lo scenario peggiore per l'algoritmo e si verifica quando gli input sono numeri di Fibanocci consecutivi.
Un limite leggermente più liberale è: log a, dove la base del logaritmo è (sqrt (2)) è implicita in Koblitz.
Per scopi crittografici si considera solitamente la complessità bit per bit degli algoritmi, tenendo conto che la dimensione dei bit è data approssimativamente da k = loga.
Ecco un'analisi dettagliata della complessità bit per bit di Euclid Algorith:
Sebbene nella maggior parte dei riferimenti la complessità bit per bit dell'Algoritmo Euclidico sia data da O (loga) ^ 3, esiste un limite più stretto che è O (loga) ^ 2.
Tener conto di; 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
osservare che: a = r0> = b = r1> r2> r3 ...> rm-1> rm> 0 .......... (1)
e rm è il massimo comune divisore di a e b.
Da un'affermazione nel libro di Koblitz (A course in number Theory and Cryptography) si può dimostrare che: ri + 1 <(ri-1) / 2 ................. ( 2)
Sempre in Koblitz il numero di operazioni di bit richieste per dividere un intero positivo di k bit per un intero positivo di l bit (assumendo k> = l) è dato come: (k-l + 1) .l ...... ............. (3)
Per (1) e (2) il numero di divisoni è O (loga) e quindi per (3) la complessità totale è O (loga) ^ 3.
Ora questo può essere ridotto a O (loga) ^ 2 da un'osservazione in Koblitz.
considera ki = logri +1
per (1) e (2) abbiamo: ki + 1 <= ki per i = 0,1, ..., m-2, m-1 e ki + 2 <= (ki) -1 per i = 0 , 1, ..., m-2
e per (3) il costo totale dei m divisoni è limitato da: SUM [(ki-1) - ((ki) -1))] * ki per i = 0,1,2, .., m
riorganizzare questo: SUM [(ki-1) - ((ki) -1))] * ki <= 4 * k0 ^ 2
Quindi la complessità bit per bit dell'algoritmo di Euclide è O (loga) ^ 2.
a%b
. Il caso peggiore è quandoa
eb
sono numeri di Fibonacci consecutivi.