• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 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()

    上篇:gmp_export()

    下篇:gmp_gcd()