Теорема Габриэля Ламе ограничивает количество шагов величиной log (1 / sqrt (5) * (a + 1/2)) - 2, где основание журнала равно (1 + sqrt (5)) / 2. Это для наихудшего сценария алгоритма, и это происходит, когда входные данные являются последовательными числами Фибаноччи.
Несколько более либеральная граница: log a, где основание журнала (sqrt (2)) подразумевается Коблицем.
В криптографических целях мы обычно рассматриваем поразрядную сложность алгоритмов, принимая во внимание, что размер битов приблизительно определяется как k = loga.
Вот подробный анализ поразрядной сложности алгоритма Евклида:
Хотя в большинстве ссылок поразрядная сложность алгоритма Евклида задается как 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.
Утверждением в книге Коблица (курс теории чисел и криптографии) можно доказать, что: ri + 1 <(ri-1) / 2 ................. ( 2)
Снова в Коблице количество битовых операций, необходимых для деления k-разрядного положительного целого числа на l-разрядное положительное целое число (при условии, что k> = l), дается как: (k-l + 1) .l ...... ............. (3)
Согласно (1) и (2) количество делений равно O (loga), поэтому согласно (3) общая сложность O (loga) ^ 3.
Теперь это можно свести к O (loga) ^ 2 с помощью замечания Коблица.
рассмотрим ki = logri +1
согласно (1) и (2) имеем: ki + 1 <= ki для i = 0,1, ..., m-2, m-1 и ki + 2 <= (ki) -1 для i = 0 , 1, ..., м-2
и по (3) общая стоимость m делений ограничена: SUM [(ki-1) - ((ki) -1))] * ki для i = 0,1,2, .., m
переставив это: СУММ [(ki-1) - ((ki) -1))] * ki <= 4 * k0 ^ 2
Таким образом, поразрядная сложность алгоритма Евклида равна O (loga) ^ 2.
a%b
. Худший случай - это когдаa
иb
являются последовательными числами Фибоначчи.