anwior,
предъявленные алгоритмы основаны на итерационном способе нахождения квадратного корня, известном еще древним грекам. А именно: последовательность
,
очень быстро сходится к величине
. Для обоснования этого метода можно заметить, что это есть не что иное, как метод Ньютона нахождения корня уравнения
.
Метод Ньютона имеет квадратичную скорость сходимости, или же, грубо говоря, порядок расхождения с искомым результатом каждого следующего значения уменьшается примерно в два раза. Т.е. для числа порядка
потребуется около ... 10-15 итераций (начальное приближение требуется, правда, поточнее). В общем случае, если нам дано
-значное число, то число итераций будет порядка
.
Далее рассмотрим насколько трудоемка одна итерация. У нас используется одна операция сложения, одна операция деления и одна операция деления пополам. Операции сложения и деления пополам (сдвиг на 1 бит) практически бесплатны, а вот операция деления достаточно трудоемка. Например, классический алгоритм
деление уголком требует порядка
операций. Но и здесь придумано множество быстрых алгоритмов со сложностью порядка
. Любопытно, что одним из способов вычисления
является поиск всё тем же методом Ньютона корня уравнения
с последующим "быстрым" умножением на
. Исследование показывает, что данный алгоритм требует всего лишь в 3 раза больше времени, затрачиваемого на умножение.
Итого на поиск квадратного корня из
-значного числа требуется порядка
элементарных операций (сложение, умножение однозначных чисел).
Стоит также отметить, что современное ПО работает с 64-битовой арифметикой, то бишь в системе счисления по основанию
, где ваше страшное
имеет всего 34 знака. И проблем с извлечением корня у чисел порядка
нет никаких.