PHP | gmp_invert()表示逆模

gmp_invert()是PHP中的一个内置函数,用于查找gmp数的模逆( 多精度 :对于大的数字)在另一个GMP编号下。

null

模逆是一个数字x,因此:

a x ≡ 1 (mod b) 

x的值应该在{0,1,2,…b-1}中,即在整数模b的环中。

语法:

gmp_invert ( $a, $b )

参数: 此函数接受两个GMP编号 一美元 b美元 如上面的语法所示。此函数查找 一美元 模下 b美元 。这些参数可以是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: 当数字字符串作为参数传递时,计算逆模的程序。

<?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 . "" ;
// calculates the inverse modulo of a number
$a = "10" ; $b = "17" ;
$invMod = gmp_invert( $a , $b );
echo $invMod . "" ;
?>


输出:

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 . "" ;
// calculates the inverse modulo of a number
$a = gmp_init(10, 10);
$b = gmp_init(17, 10);
$invMod = gmp_invert( $a , $b );
echo $invMod . "" ;
?>


输出:

4
12

参考: http://php.net/manual/en/function.gmp-invert.php

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享