Gabriel Lame의 정리는 log (1 / sqrt (5) * (a + 1 / 2))-2로 단계 수를 제한합니다. 여기서 로그의 밑은 (1 + sqrt (5)) / 2입니다. 이것은 알고리즘에 대한 최악의 상황을위한 것이며 입력이 연속적인 Fibanocci 숫자 일 때 발생합니다.
약간 더 자유로운 경계는 다음과 같습니다. log a, 여기서 로그의 밑은 (sqrt (2))가 Koblitz에 의해 암시됩니다.
암호화 목적을 위해 우리는 일반적으로 비트 크기가 대략 k = loga로 주어짐을 고려하여 알고리즘의 비트 별 복잡성을 고려합니다.
다음은 Euclid 알고리즘의 비트 복잡도에 대한 자세한 분석입니다.
대부분의 참고 문헌에서 유클리드 알고리즘의 비트 복잡도는 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의 최대 공약수입니다.
Koblitz의 저서 (A course in number Theory and Cryptography)의 주장으로 다음과 같이 증명할 수 있습니다. ri + 1 <(ri-1) / 2 ................. ( 2)
다시 Koblitz에서 k 비트 양의 정수를 l 비트 양의 정수 (k> = l 가정)로 나누는 데 필요한 비트 연산의 수는 다음과 같이 지정됩니다. (k-l + 1) .l ...... .............(삼)
(1)과 (2)의 분할 수는 O (loga)이므로 (3)의 총 복잡도는 O (loga) ^ 3입니다.
이제 이것은 Koblitz의 발언에 의해 O (loga) ^ 2로 축소 될 수 있습니다.
ki = logri +1 고려
(1)과 (2)에 의해 우리는 i = 0,1, ..., m-2, m-1의 경우 ki + 1 <= ki, i = 0의 경우 ki + 2 <= (ki) -1 , 1, ..., m-2
(3) m 디비전의 총 비용은 다음과 같이 제한됩니다. SUM [(ki-1)-((ki) -1))] * ki for i = 0,1,2, .., m
재정렬하기 : SUM [(ki-1)-((ki) -1))] * ki <= 4 * k0 ^ 2
따라서 Euclid 알고리즘의 비트 복잡도는 O (loga) ^ 2입니다.
a%b
. 때 최악의 경우는a
과b
연속 피보나치 숫자이다.