gmp_fact

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_factFactorielle GMP

Description

gmp_fact(GMP|int|string $num): GMP

Calcule la factorielle (num!) de num.

Liste de paramètres

num

Le nombre factoriel.

Un objet GMP, un entier, ou une chaîne de caractères numérique.

Valeurs de retour

Un objet GMP.

Exemples

Exemple #1 Exemple avec gmp_fact()

<?php
$fact1
= gmp_fact(5); // 5 * 4 * 3 * 2 * 1
echo gmp_strval($fact1) . "\n";

$fact2 = gmp_fact(50); // 50 * 49 * 48, ... etc
echo gmp_strval($fact2) . "\n";
?>

L'exemple ci-dessus va afficher :

120
30414093201713378043612608166064768844377641568960512000000000000

add a note add a note

User Contributed Notes 2 notes

up
3
raholl
6 years ago
I was expecting gmp_fact() is more effective than doing a while loop, but measurements show opposite:

<?php
$cislo
= 112;
$fact = $cislo;
$ffact = 1;
$mt = microtime();
while(
$fact >= 1)
{
   
$ffact = $fact * $ffact;
   
$fact--;
}
$md=number_format(microtime()-$mt, 6);
echo
"<h1>LOOP ($md):</h1>";
echo
$ffact;

$mt = microtime();
$vec = gmp_fact($cislo);
$md=number_format(microtime()-$mt, 6);
echo
"<h1>GMP FACT ($md):</h1>";
echo
$vec;
exit();
?>

WILL OUTPUT:

LOOP (0.000022s):
1.9745068572211E+182

GMP FACT (0.000132s):
1.9745068572211E+182

Result is 0.000022s loop, and 0.000132s gmp_fact()
up
-12
raholl
6 years ago
I was expecting gmp_fact() is more effective than doing a while loop, but measurements show opposite:

<?php
$cislo
= 112;
$fact = $cislo;
$ffact = 1;
$mt = microtime();
while(
$fact >= 1)
{
   
$ffact = $fact * $ffact;
   
$fact--;
}
$md=number_format(microtime()-$mt, 6);
echo
"<h1>LOOP ($md):</h1>";
echo
$ffact;

$mt = microtime();
$vec = gmp_fact($cislo);
$md=number_format(microtime()-$mt, 6);
echo
"<h1>GMP FACT ($md):</h1>";
echo
$vec;
exit();
?>

WILL OUTPUT:

LOOP (0.000022s):
1.9745068572211E+182

GMP FACT (0.000132s):
1.9745068572211E+182

Result is 0.000022s loop, and 0.000132s gmp_fact()
To Top