8
votes

Factoriel de plus de 170+

Chaque fois que j'essaie d'obtenir le factoriel de 171, j'invarre Inf. 170 fonctionne bien. Est-il possible d'obtenir le factoriel de 171+ dans un script? Comment? Ma fonction: xxx


0 commentaires

6 Réponses :


3
votes
echo "1241018070217667823424840524103103992616605577501693185388951803611996075221691752992751978120487585576464959501670387052809889858690710767331242032218484364310473577889968548278290754541561964852153468318044293239598173696899657235903947616152278558180061176365108428800000000000000000000000000000000000000000"
really though, your function is fine.  I think PHP lacks that kind of precision.  I got the value (it is correct btw) in python

4 commentaires

Je n'ai pas besoin de la factorielle 171, j'ai besoin du script, ce qui pourrait compter que :)


Ouvrir le terminal. Tapez 'Python' Type 'Importer Math' Type 'Math.Factorial (171)'. Vous ne pouvez pas le faire dans PHP sans une extension comme @Crozin et @ebomike mentionné


MDR oui. Une calculatrice bat en réalité un moteur de recherche en maths. Allez comprendre.


Vous êtes diabolique. Mais +1



6
votes

Vous devrez utiliser BC Math ou GNU MP extension. PHP ne fournit aucun outil pour des opérations de haute précision ou de haute précision ootb.


0 commentaires

0
votes

C'est un nombre plus important que vous ne pouvez tenir en utilisant 32 bits. Si vous exécutez le même code sur un ordinateur 64 bits, cela devrait fonctionner.


4 commentaires

Pas exactement une solution très portable.


Non, mais en fonction de l'endroit où le code doit fonctionner, cela pourrait être le plus facile.


Un ordinateur 64 bits a une limite aussi: D ... il serait juste 2 ^ 21 fois plus grand: p


Dépend du système d'exploitation; Sous Windows, il sera toujours 32 bits, mais sur Linux, il sera 64 comme vous le suggérez. PUBBS.net/200902/ php / ...



9
votes

Si vous traitez de très grands nombres, vous devrez utiliser une extension qui vous permet de le faire.

Il y a bcmath ( http://www.php.net/manual/fr /book.bc.php ) et GMP ( http: // www.php.net/manual/fr/book.gmp.php ).


1 commentaires

L'extension MP GNU offre même une fonction gmp_fact () pour calculer des factoriels importants hors de la boîte.



3
votes

Vous obtenez probablement une valeur dépassant le flottant maximum de double précision dans une machine 32 bits ( ~ 10 ^ 308 ). 170! Factorial est ~ 7.25741562 × 10 ^ 307 qui est juste sous cela, cependant, 171! est plus grand. Votre meilleur pari est d'utiliser l'une des bibliothèques Ebomike ou Crozin Recommande dans leurs réponses.


0 commentaires

2
votes

pour le grand n, vous pouvez calculer n! Très rapidement avec peu d'erreur en utilisant l'approximation de Stirling. Jetez un coup d'œil à ce post; Il a une analyse de la fonction et de certains échantillons de code:

http://threebrothers.org/brendan/blog/sttirlings-approximation -Formula-Clojure /


0 commentaires