Home >Java >javaTutorial >How Can a Modified Hensel Lifting Algorithm with Precomputed Tables Efficiently Compute Square Roots?
In your given code, you are using a modified version of Hensel's lemma to find the square root. In this implementation, you skip certain t values when doing a Hensel loop. You can skip these t values that do not affect the r value by using the bitwise trick to find the factor t that raises z to the largest power of 2.
Outside of your code, you also provide several precomputed tables, including:
start: A table of 1024 elements used to get the start value of the Hensel loop.
bad255: A 512-element Boolean table for quickly checking whether a given number modulo 255 is square.
The general idea of the implementation is as follows:
First, you use some quick troubleshooting to sift out the obvious answers.
Next, you check if the number is squared modulo 255. To do this, you use bitwise tricks to calculate the modulo 255 value of the number and then look it up in a precomputed bad255 table.
Finally, you use a modified Hensel loop to calculate the square root of a number. In the loop, you use bitwise tricks to skip certain t values to improve efficiency.
The above is the detailed content of How Can a Modified Hensel Lifting Algorithm with Precomputed Tables Efficiently Compute Square Roots?. For more information, please follow other related articles on the PHP Chinese website!