Tabele odnośników zostały wspomniane w komentarzach. Istnieją dwa podejścia.
Szybko
Utwórz tabelę o długości 256 bajtów, z każdą kolejną wartością pierwiastek kwadratowy z odpowiedniego indeksu. Jest to szybkie, ponieważ używasz argumentu jako indeksu, aby uzyskać bezpośredni dostęp do właściwej wartości. Wadą jest to, że potrzebuje długiej tabeli z dużą ilością zduplikowanych wartości.
Kompaktowy
Jak powiedziano, 8-bitowa liczba całkowita może mieć tylko wartości od 0 do 255, a odpowiednie pierwiastki kwadratowe mają wartości od 0 do 16 (zaokrąglone). Skonstruuj tablicę 16 pozycji (od zera) z n-tym wpisem maksymalną wartością argumentu, dla którego pierwiastek kwadratowy wynosi n. Tabela wyglądałaby następująco:
0
2
6
12
20
etc.
Przechodzisz przez stół i zatrzymujesz się, gdy napotykasz wartość większą lub równą argumentowi. Przykład: pierwiastek kwadratowy z 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
Podczas gdy tabela szybkiego wyszukiwania ma ustalony czas wykonania (tylko jedno wyszukiwanie), tutaj czas wykonania jest dłuższy dla argumentów o wyższej wartości.
W przypadku obu metod, wybierając różne wartości dla tabeli, możesz wybrać pomiędzy zaokrągloną lub skróconą wartością pierwiastka kwadratowego.