Таблицы поиска были упомянуты в комментариях. Есть два подхода.
Быстрое
создание таблицы длиной 256 байт, с каждым следующим значением квадратный корень из соответствующего индекса. Это быстро, поскольку вы используете аргумент в качестве индекса для прямого доступа к нужному значению. Недостаток в том, что ему нужна длинная таблица с множеством повторяющихся значений.
Compact
Как уже говорилось, 8-разрядное целое число может иметь значения только от 0 до 255, а соответствующие квадратные корни - от 0 до 16 (округлены). Построить таблицу из 16 записей (начиная с нуля) с n-й записью - максимальное значение для аргумента, для которого квадратный корень равен n. Таблица будет выглядеть так:
0
2
6
12
20
etc.
Вы проходите через таблицу и останавливаетесь, когда встречаете значение, большее или равное вашему аргументу. Пример: квадратный корень из 18
set index to 0
value[0] = 0, is less than 18, go to the next entry
value[1] = 2, is less than 18, go to the next entry
value[2] = 6, is less than 18, go to the next entry
value[3] = 12, is less than 18, go to the next entry
value[4] = 20, is greater than or equal to 18, so sqrt(18) = 4
В то время как таблица быстрого просмотра имеет фиксированное время выполнения (только один поиск), здесь время выполнения больше для аргументов с более высокими значениями.
Для обоих методов следует, что, выбирая разные значения для таблицы, вы можете выбрать округленное или усеченное значение для квадратного корня.