gmp_invert() 是 PHP 中的 内置 函数,用于在另一个 GMP 数下找到 GMP 数(GNU 多精度:对于大数)的模逆。
模逆是一个数 x 使得:
a x ≡ 1 (mod b)
x 的值应该在 {0, 1, 2, ... b-1} 中,即在整数模 b 的环中。
用法:
gmp_invert ( $a, $b )
参数:该函数接受两个 GMP 编号 $a 和 $b,如上述语法所示。此函数在模 $b 下找到 $a 的倒数。这些参数可以是 PHP 5.6 及更高版本中的 GMP 对象,或者我们也可以传递数字字符串,前提是可以将该字符串转换为数字。
返回值:此函数返回一个 GMP 数字,它是作为参数传递给它的两个数字的计算逆模。如果无法找到给定两个数的反模,则此函数返回 FALSE。
例子:
Input: $a = 3, $b = 11 Output:4 Since (4*3) mod 11 = 1, 4 is modulo inverse of 3 One might think, 15 also as a valid output as "(15*3) mod 11" is also 1, but 15 is not in ring {0, 1, 2, ... 10}, so not valid. Input: $a = 10, $b = 17 Output:12 Since (10*12) mod 17 = 1, 12 is modulo inverse of 3
以下示例程序旨在说明 PHP 中的 gmp_invert() 函数:
程序1:当数字字符串作为 GMP 数字作为参数传递时,计算逆模的程序。
<?php
// PHP program to calculate inverse modulo
// strings as GMP numbers
$a = "3";
$b = "11";
// calculates the inverse modulo of a number
$invMod = gmp_invert($a, $b);
echo $invMod."\n";
// calculates the inverse modulo of a number
$a = "10"; $b = "17";
$invMod = gmp_invert($a, $b);
echo $invMod."\n";
?>
输出:
4 12
程序2:当 GMP 数字作为参数传递时计算逆模的程序。
<?php
// PHP program to calculate inverse modulo
// creating GMP numbers using gmp_init()
$a = gmp_init(3, 10);
$b = gmp_init(11, 10);
// calculates the inverse modulo of a number
$invMod = gmp_invert($a, $b);
echo $invMod."\n";
// calculates the inverse modulo of a number
$a = gmp_init(10, 10);
$b = gmp_init(17, 10);
$invMod = gmp_invert($a, $b);
echo $invMod."\n";
?>
输出:
4 12
参考:
http://php.net/manual/en/function.gmp-invert.php
相关用法
- PHP imagecreatetruecolor()用法及代码示例
- PHP ImagickDraw getTextAlignment()用法及代码示例
- PHP Ds\Sequence last()用法及代码示例
- PHP Imagick floodFillPaintImage()用法及代码示例
- PHP geoip_continent_code_by_name()用法及代码示例
- PHP GmagickPixel setcolor()用法及代码示例
- PHP opendir()用法及代码示例
- PHP cal_to_jd()用法及代码示例
- PHP stream_get_transports()用法及代码示例
注:本文由纯净天空筛选整理自barykrg大神的英文原创作品 PHP | gmp_invert() for inverse modulo。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。