O Teorema de Gabriel Lame limita o número de passos por log (1 / sqrt (5) * (a + 1/2)) - 2, onde a base do log é (1 + sqrt (5)) / 2. Este é o pior cenário para o algoritmo e ocorre quando as entradas são números de Fibanocci consecutivos.
Um limite ligeiramente mais liberal é: log a, onde a base do log é (sqrt (2)) é implícito por Koblitz.
Para fins criptográficos, normalmente consideramos a complexidade bit a bit dos algoritmos, levando em consideração que o tamanho do bit é dado aproximadamente por k = loga.
Aqui está uma análise detalhada da complexidade bit a bit do Algorito de Euclides:
Embora na maioria das referências a complexidade bit a bit do Algoritmo de Euclides seja dada por O (loga) ^ 3, existe um limite mais estreito que é O (loga) ^ 2.
Considerar; 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
observe que: a = r0> = b = r1> r2> r3 ...> rm-1> rm> 0 .......... (1)
e rm é o máximo divisor comum de a e b.
Por uma reivindicação no livro de Koblitz (Um curso em Teoria e Criptografia dos números) pode ser provado que: ri + 1 <(ri-1) / 2 ................. ( 2)
Novamente em Koblitz, o número de operações de bits necessárias para dividir um inteiro positivo de k-bit por um inteiro positivo de l-bit (assumindo k> = l) é dado como: (k-l + 1) .l ...... ............. (3)
Por (1) e (2) o número de divisões é O (loga) e então por (3) a complexidade total é O (loga) ^ 3.
Agora, isso pode ser reduzido a O (loga) ^ 2 por uma observação em Koblitz.
considere ki = logri +1
por (1) e (2) temos: ki + 1 <= ki para i = 0,1, ..., m-2, m-1 e ki + 2 <= (ki) -1 para i = 0 , 1, ..., m-2
e por (3) o custo total das m divisões é limitado por: SUM [(ki-1) - ((ki) -1))] * ki para i = 0,1,2, .., m
reorganizando isso: SUM [(ki-1) - ((ki) -1))] * ki <= 4 * k0 ^ 2
Portanto, a complexidade bit a bit do Algoritmo de Euclides é O (loga) ^ 2.
a%b
. O pior caso é quandoa
eb
são números de Fibonacci consecutivos.