Heim > Backend-Entwicklung > C++ > Wie können wir den T2-Term effizient aus T1 = T2 * N extrahieren? Verwenden Sie die Primexponentenanalyse?

Wie können wir den T2-Term effizient aus T1 = T2 * N extrahieren? Verwenden Sie die Primexponentenanalyse?

Barbara Streisand
Freigeben: 2024-12-05 16:57:10
Original
610 Leute haben es durchsucht

How Can We Efficiently Extract the T2 Term from T1 = T2 * N! Using Prime Exponent Analysis?

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]]
Nach dem Login kopieren

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);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage