PHP 7.4.0RC6 Released!

gmp_fact

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

gmp_factFactorial

Descrierea

gmp_fact ( mixed $a ) : GMP

Calculates factorial (a!) of a.

Parametri

a

The factorial number.

Un număr GMP sub formă de resource în PHP 5.5 și anterior, un obiect GMP în PHP 5.6 și ultrior, su un șir de caractere numeric atunci când acesta poate fi convertit într-un număr.

Valorile întoarse

Un număr GMP sub formă de resource în PHP 5.5 și anterior, sau obiect GMP în PHP 5.6 și ulterior.

Exemple

Example #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";
?>

Exemplul de mai sus va afișa:

120
30414093201713378043612608166064768844377641568960512000000000000

add a note add a note

User Contributed Notes 2 notes

up
2
raholl
1 year 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()
up
-6
raholl
1 year 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()
To Top