Відповіді:
Використовуючи швидке перетворення Фур'є, множення на бітні числа можна здійснити за час ˜ O ( k ) (де тильда означає, що ми ігноруємо полілогіармічні фактори). Шляхом повторного квадратування ми можемо обчислити n n 2 за допомогою множення на O ( log n ) , і кожне множення передбачає не більше, ніж n n 2 , яке має приблизно n 2 log 2 n біт. Отже загальна необхідна кількість часу становить ˜ O ( n 2 ( .
Відредаговано у відповідь на коментарі Час обчислення можна розкласти на час, необхідний для обчислення f 1 ( n ) = n 2, і час, необхідний для виконання n f 1 ( n ) . Я вважаю, що множення m бітного числа на n бітне число займає рівно m n час методом шкільної книги; доповнення тощо - постійний час. В результаті обчислення n 2 приймає журнал 2час.
Припустимо, ми використовуємо двійкову експоненцію для обчислення . Двійкові експоненції виконують два види операцій при обчисленні f ( n ) : зіставлення поточного продукту та множення поточного добутку на n відповідно до того, чи поточний біт у бінарному розширенні n 2 дорівнює 0 або 1. У гіршому випадку, n 2 - потужність двох, так що бінарне експоненцію багаторазово квадратує свій поточний добуток, поки не досягне відповіді. Зауважте, що n 2 має m ′ = ⌈ 2 log 2 ( n біт, так що кількість таких квадратів m = m ′ - 1 . Цей випадок ми аналізуємо далі нижче.
Перше квадратування займає час, в результаті чого продукт o 1 = 2 log 2 ( n ) -біт. Другий квадратик займає два o 1 бітових числа і запускається в t 2 = o 2 1 раз, в результаті чого продукт o 2 = 2 o 1- біт. Продовжуючи i -й крок займає t i = 4 i - 1 логчас і виводить aoi=2ilog2(n)-бітний продукт. Цей процес зупиняється наm-му кроці; як результат, потрібен час
.
Коли включена початкова вартість квадратування, ми вважаємо, що нам потрібен максимум часу
Примітка