Le théorème de Gabriel Lame limite le nombre d'étapes par log (1 / sqrt (5) * (a + 1/2)) - 2, où la base du log est (1 + sqrt (5)) / 2. C'est pour le pire des cas pour l'algorithme et cela se produit lorsque les entrées sont des nombres de Fibanocci consécutifs.
Une borne légèrement plus libérale est: log a, où la base du log est (sqrt (2)) est implicite par Koblitz.
À des fins cryptographiques, nous considérons généralement la complexité au niveau du bit des algorithmes, en tenant compte du fait que la taille en bits est donnée approximativement par k = loga.
Voici une analyse détaillée de la complexité bit à bit de l'algorithme Euclide:
Bien que dans la plupart des références, la complexité bit à bit de l'algorithme Euclide soit donnée par O (loga) ^ 3, il existe une borne plus étroite qui est O (loga) ^ 2.
Considérer; 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
observer que: a = r0> = b = r1> r2> r3 ...> rm-1> rm> 0 .......... (1)
et rm est le plus grand diviseur commun de a et b.
Par une affirmation dans le livre de Koblitz (Un cours de théorie des nombres et de cryptographie), on peut prouver que: ri + 1 <(ri-1) / 2 ................. ( 2)
Encore une fois dans Koblitz, le nombre d'opérations sur les bits nécessaires pour diviser un entier positif de k bits par un entier positif de 1 bits (en supposant que k> = l) est donné comme suit: (k-l + 1) .l ...... ............. (3)
Par (1) et (2) le nombre de divisions est O (loga) et donc par (3) la complexité totale est O (loga) ^ 3.
Maintenant cela peut être réduit à O (loga) ^ 2 par une remarque de Koblitz.
considérez ki = logri +1
par (1) et (2) on a: ki + 1 <= ki pour i = 0,1, ..., m-2, m-1 et ki + 2 <= (ki) -1 pour i = 0 , 1, ..., m-2
et par (3) le coût total des m divisions est borné par: SUM [(ki-1) - ((ki) -1))] * ki pour i = 0,1,2, .., m
réorganiser ceci: SUM [(ki-1) - ((ki) -1))] * ki <= 4 * k0 ^ 2
Ainsi, la complexité au niveau du bit de l'algorithme d'Euclide est O (loga) ^ 2.
a%b
. Le pire des cas est quanda
etb
sont des nombres de Fibonacci consécutifs.