Рассчитайте b с помощью следующих итераций:
a 1 = a 1 ,
a 2 = a 2 ,
...
a i = a i ,
...
a b = a b
У вас есть a i + 1 = a i × a .Вычислять каждый a i не совсем точно.Дело в том, что относительная ошибка a b меньше, чем n раз, относительная ошибка a .
Вы хотитеполучить окончательную относительную ошибку менее чем 10 -n .Таким образом, относительная ошибка на каждом шаге может составлять .Удалите последние цифры на каждом шаге.
Например, a = 2 , b = 16 , n = 1 .Конечная относительная погрешность составляет 10 -n = 0,1 .Относительная ошибка на каждом шаге составляет 0,1 / 16> 0,001 .Таким образом, 3 цифры важны на каждом шаге.Если n = 2, вы должны сохранить 4 цифры.Общее правило: сохранять [ n + log 10 b ] цифр на каждом шаге.
2 (1), 4 (2), 8 (3), 16(4), 32 (5), 64 (6), 128 (7), 256 (8), 512 (9), 1024 (10) → 102,
204 (11), 408 (12), 816(13), 1632 (14) → 163, 326 (15), 652 (16).
Ответ: 6.
Этот алгоритм имеет округлость O (b).Но это легко изменить, чтобы получить O (log b)