SunshinePHP 2020 CFP Started

gmp_fact

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

gmp_factФакториал

Описание

gmp_fact ( mixed $a ) : GMP

Вычисляет факториал (a!) числа a.

Список параметров

a

Число, факториал которого вычисляется.

Либо ресурс (resource) номера GMP в PHP 5.5 и более ранних версиях, объект GMP в PHP 5.6 и более поздних версиях, либо числовая строка при условии, что можно преобразовать последнюю в число.

Возвращаемые значения

Ресурс (resource) GMP числа в PHP 5.5 и ранее, или объект класса GMP в PHP 5.6 и новее.

Примеры

Пример #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, ... и т.д.
echo gmp_strval($fact2) . "\n";
?>

Результат выполнения данного примера:

120
30414093201713378043612608166064768844377641568960512000000000000

add a note add a note

User Contributed Notes 2 notes

up
1
raholl
10 months 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
-3
raholl
10 months 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