In Ihrem angegebenen Code verwenden Sie eine modifizierte Version von Hensels Lemma, um die Quadratwurzel zu finden. In dieser Implementierung überspringen Sie bestimmte t-Werte, wenn Sie eine Hensel-Schleife ausführen. Sie können diese t-Werte, die den r-Wert nicht beeinflussen, überspringen, indem Sie den bitweisen Trick verwenden, um den Faktor t zu finden, der z auf die größte Potenz von 2 erhöht.
Außerhalb Ihres Codes stellen Sie auch mehrere vorberechnete Tabellen bereit, darunter:
Start: Eine Tabelle mit 1024 Elementen, die verwendet wird, um den Startwert der Hensel-Schleife zu erhalten.
bad255: Eine boolesche Tabelle mit 512 Elementen zur schnellen Überprüfung, ob eine bestimmte Zahl modulo 255 quadratisch ist.
Die allgemeine Idee der Implementierung ist wie folgt:
Zunächst nutzen Sie eine schnelle Fehlerbehebung, um die offensichtlichen Antworten herauszufiltern.
Als nächstes prüfen Sie, ob die Zahl quadriert modulo 255 ist. Dazu verwenden Sie bitweise Tricks, um den Modulo-255-Wert der Zahl zu berechnen und ihn dann in einer vorberechneten bad255-Tabelle nachzuschlagen.
Zuletzt verwenden Sie eine modifizierte Hensel-Schleife, um die Quadratwurzel einer Zahl zu berechnen. In der Schleife verwenden Sie bitweise Tricks, um bestimmte t-Werte zu überspringen und so die Effizienz zu verbessern.
Das obige ist der detaillierte Inhalt vonWie kann ein modifizierter Hensel-Lifting-Algorithmus mit vorberechneten Tabellen Quadratwurzeln effizient berechnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!