Maison > développement back-end > C++ > Comment pouvons-nous extraire efficacement le terme T2 de T1 = T2 * N ! Vous utilisez l'analyse des exposants premiers ?

Comment pouvons-nous extraire efficacement le terme T2 de T1 = T2 * N ! Vous utilisez l'analyse des exposants premiers ?

Barbara Streisand
Libérer: 2024-12-05 16:57:10
original
620 Les gens l'ont consulté

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

Dans cet article, l'auteur discute d'une méthode rapide et précise pour calculer la factorielle d'un grand nombre à l'aide d'une bibliothèque de grands nombres à virgule fixe. Une question récurrente concernant l'implémentation était l'extraction du terme T2 du produit T1 = T2 * N!, où T1 et N! sont déjà connus. Pour trouver le terme T2, l'auteur a mené une analyse sur les exposants premiers et a proposé une formule pour le calculer :

T2(4N) = multiplication(i=all primes<=4N) of [i^sum(j=1,2,3,4,5,...4N/(i^j)) of [(4N/(i^j))%2]]
Copier après la connexion

Les sous-termes de T2 ont l'exposant e pour premier i à l'intérieur du terme T2(N) qui peut être calculé comme ceci :

for (e=0,j=N4;j;e+=j&1,j/=p);
Copier après la connexion

où e est l'exposant, p est premier et N4 est 4*N

Le terme T2 calculé est ensuite utilisé pour optimiser le calcul des factorielles, et l'algorithme résultant présente une complexité de calcul proche de ~ O(log(n)).

Des mesures temporelles approximatives sont fournies pour les 128 premières factorielles. L'auteur reconnaît que cette implémentation ne peut pas être simplifiée davantage et est déjà hautement optimisée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal