In diesem Artikel diskutiert der Autor eine schnelle und genaue Methode zur Berechnung der Fakultät einer großen Zahl mithilfe der Festkomma-BigNumber-Bibliothek. Eine immer wiederkehrende Frage zur Implementierung war die Extraktion des T2-Terms aus dem Produkt T1 = T2 * N!, wobei T1 und N! sind bereits bekannt. Um den T2-Term zu finden, führte der Autor eine Analyse der Primzahlexponenten durch und schlug eine Formel zu seiner Berechnung vor:
T2(4N) = multiplication(i=all primes<=4N) of [i^sum(j=1,2,3,4,5,...4N/(i^j)) of [(4N/(i^j))%2]]
Unterterme von T2 haben den Exponenten e für die Primzahl i innerhalb des T2(N)-Terms, der sein kann wie folgt berechnet:
for (e=0,j=N4;j;e+=j&1,j/=p);
wobei e der Exponent ist, p eine Primzahl ist und N4 4*N ist
The Der berechnete T2-Term wird dann verwendet, um die Berechnung der Fakultäten zu optimieren, und der resultierende Algorithmus weist eine Rechenkomplexität in der Nähe von ~ O(log(n)) auf.
Für die ersten 128 Fakultäten werden grobe Zeitmessungen bereitgestellt. Der Autor erkennt an, dass diese Implementierung nicht weiter vereinfacht werden kann und bereits stark optimiert ist.
Das obige ist der detaillierte Inhalt vonWie können wir den T2-Term effizient aus T1 = T2 * N extrahieren? Verwenden Sie die Primexponentenanalyse?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!