當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。