Fonctions rapides factoriels
Il y a cinq algorithmes que tout le monde qui veut calculer le n factoriel! = 1.2.3. n devrait savoir.
- Le SplitRecursive algorithme. car il est simple et l'algorithme le plus rapide qui n'utilise pas factorisation.
- Le PrimeSwing algorithme. parce qu'il est le (asymptotiquement) algorithme le plus rapide connu pour calculer n. L'algorithme est basé sur la notion des « numéros Swing » et calcule n! via le premier factorisation de ces nombres.
- L'algorithme ingénieux de Moessner qui utilise seulement des additions! Bien que sans importance pratique (car il est lent), il a la fascination d'une solution inattendue.
- L'algorithme Poor Man qui utilise pas de bibliothèque Big-entier et peut être facilement mis en œuvre dans toutes les langues de l'ordinateur et est encore rapide jusqu'à 10000 !.
- L'algorithme de ParallelPrimeSwing, qui est l'algorithme PrimeSwing avec des performances améliorées en utilisant des méthodes de programmation concurrente et tirant ainsi profit de processeurs multi-coeurs.
- Si vous ne joignez pas une grande importance à la haute performance alors obtenir une bibliothèque BigInteger et l'utilisation:
- Et voici un algorithme qui personne n'a besoin, pour le simplet seulement: longue factoriel (longue n) Il suffit de ne l'utilisez pas!
Un exemple d'un calcul de PrimeSwing:

Cet exemple montre un calcul efficace de la fonction factoriel réduit à un calcul efficace du factoriel oscillant n # x2240 ;. Quelques informations sur ces chiffres peuvent être trouvés ici et ici. La factorisation des nombres d'oscillation est cruciale pour la mise en œuvre de l'algorithme de PrimeSwing.
Une description concise de cet algorithme est donné dans cette rédaction (pdf) et dans le lien ci-dessous SageMath (Algo 5).