当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


PHP gmp_invert()用法及代码示例


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




相关用法


注:本文由纯净天空筛选整理自barykrg大神的英文原创作品 PHP | gmp_invert() for inverse modulo。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。