gmp_fact()
(PHP 4 >= 4.0.4, PHP 5, PHP 7)
Factorial
说明
gmp_fact(mixed $a): GMP
Calculates factorial(a!)of$a.
参数
- $a
The factorial number.
可以是一个 GMP数据resouce,或一个可以转换为数值的字符串。
返回值
GMP 数值资源.
范例
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
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()
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()