# 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 オブジェクト、整数、あるいは数値に変換可能な数値形式の文字列。

GMP オブジェクトを返します。

### 例

``` <?php\$fact1 = gmp_fact(5); // 5 * 4 * 3 * 2 * 1echo gmp_strval(\$fact1) . "\n";\$fact2 = gmp_fact(50); // 50 * 49 * 48, ... etcecho 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+182GMP FACT (0.000132s):1.9745068572211E+182Result 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+182GMP FACT (0.000132s):1.9745068572211E+182Result is 0.000022s loop, and 0.000132s gmp_fact() ```