gmp_fact

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

gmp_fact阶乘

描述

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

计算 num 的阶乘 (num!)。

参数

num

阶乘数字。

一个 GMP 对象,一个 int 或一个数字 string

返回值

一个 GMP 对象。

范例

范例 #1 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";
?>

以上范例将输出

120
30414093201713378043612608166064768844377641568960512000000000000

添加笔记

用户贡献笔记 2 个笔记

raholl
5 年前
我原本以为 gmp_fact() 比循环更有效,但测量结果却相反

<?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();
?>

将输出

LOOP (0.000022s)
1.9745068572211E+182

GMP FACT (0.000132s)
1.9745068572211E+182

结果是 0.000022 秒循环,和 0.000132 秒 gmp_fact()
raholl
5 年前
我原本以为 gmp_fact() 比循环更有效,但测量结果却相反

<?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();
?>

将输出

LOOP (0.000022s)
1.9745068572211E+182

GMP FACT (0.000132s)
1.9745068572211E+182

结果是 0.000022 秒循环,和 0.000132 秒 gmp_fact()
To Top