Интересует алгоритм вычисления квадратного корня, использующий исключительно целочисленную арифметику.
Логично предположить что и результат аппроксимации выражается простой дробью. Тогда трудно представить для фиксированного

что-то быстрее последовательности

, где пара

- первое решение уравнения Пелля, т.е.

,

.
Для разложения

есть доморощенный метод. В виде таблицы:

Тут

- собственно знаки непрерывной дроби,

- некая вспомогательная переменная,

- остатки вида

, для которых имеет место рекуррентная зависимость. Вычисления ведутся до

, и простая дробь восстанавливается от последнего знака. Умножение присутствует, но только для целых чисел

. Можно впрочем сократить количество вычислений и до полупериода, хотя тут тонкости начинаются. Думаю, Вам это не подойдет, но интересно бы оценить сложность алгоритма.