이 알고리즘은 그 조합입니다 사각형에 의한 지수 알고리즘 및 모듈로 산술.
무슨 일이 일어나고 있는지 이해하려면 먼저 상황을 고려하십시오. exponent
의 힘입니다 2
. 그런 다음 그것을 가정합니다 exponent = 2 ^ k
, 결과는 결과를 제곱하여 계산할 수 있습니다. k
시간, 즉
res = (...((base ^ 2) ^2 ) ... ) ^2))
---------------------
k times
언제 exponent
힘이 아닙니다 2
, 우리는 추가 곱셈을 만들어야합니다. 우리가 분열 할 수 있다면 밝혀졌습니다 exponent
나머지가없는 2 씩, 우리는베이스를 제곱하고 지수를 나눌 수 있습니다. 그러나 나머지가 있으면 중간 결과에 전류 값을 추가로 곱해야합니다. base
.
당신이 보는 것은 모듈로 곱셈에 적용된 사각형에 의한 동일한 지수화입니다. 이 알고리즘은 정수 분할을 2 개 사용으로 나타냅니다 exponent >> 1
동일한 작동 floor(exponent / 2)
.