gmp_fact
(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
gmp_fact — Factorial
返回值
GMP 对象。
范例
示例 #1 gmp_fact() example
<?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";
?>
以上例程会输出:
120 30414093201713378043612608166064768844377641568960512000000000000

User Contributed Notes 2 notes
raholl ¶
3 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()
raholl ¶
3 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()