Предположим, вы хотите вычислить 5^65537
вместо умножения 5
65537
раз, рекомендуется сделать ((5^2)^16)*5
. Это приводит к 16-кратному возведению в квадрат и одному умножению.
Но мой вопрос: разве вы не компенсируете количество возведений в квадрат, возводя в квадрат очень большие числа? как это быстрее, когда вы переходите к базовому умножению битов в компьютерах.
Почитав комментарии, у меня появилось такое сомнение:
How is the cost of each multiplication not dependant on the size. because when
multiplying the number of bits of the multiplier will increase and this will increase the
number of additions and the number of left shifts.