PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのgmp_invert()関数とは?モジュラ逆数を求める方法を解説

PHPのgmp_invert()関数とは

PHPのgmp_invert()関数は、GMP数値(多倍長整数)に対するモジュラ逆数(剰余逆元)を計算するための関数です。モジュラ逆数とは、「ある数と掛け合わせた結果を法で割ったときに1になる」ような数のことを指します。

この関数は、暗号処理や数論関連の計算など、大きな整数を扱う場面で特に役立ちます。

モジュラ逆数の基本例

たとえば、5と14という2つの数がある場合、5のモジュラ逆数は3になります。これは次の式で確認できます。

(3 * 5) mod 14 = 1

3 × 5 = 15 となり、15 を 14 で割った余りは 1 です。このように、積が法(ここでは14)で割って1余るような数がモジュラ逆数です。

構文(シンタックス)

gmp_invert ( num1, num2 )

パラメータ

  • num1: 最初のGMP数値。モジュラ逆数を求めたい対象となる数です。

  • num2: 2番目のGMP数値。法(mod)として使用される数です。

戻り値

gmp_invert()関数は、引数として渡された2つの数値に対するモジュラ逆数をGMP数値として返します。

なお、逆数が存在しない場合(num1とnum2が互いに素でない場合)、この関数は false を返す点にも注意が必要です。

使用例

以下に、gmp_invert()関数を使用した具体的なコード例を示します。

<?php
   $n1 = "5";
   $n2 = "14";
   $res = gmp_invert($n1, $n2);
   echo $res;
?>

実行結果

上記のコードを実行すると、次のような出力が得られます。

3

この結果は、5 のモジュラ逆数(mod 14)が 3 であることを示しています。

まとめ

gmp_invert()関数を使えば、PHPでも大きな整数に対するモジュラ逆数を簡単に求めることができます。暗号理論の実装やRSA暗号などの数学的処理において重要な関数なので、GMP拡張モジュールを活用する際には覚えておくと便利です。

  1. PHPのgregoriantojd()関数とは?構文・パラメータ・使用例を解説

    PHPのgregoriantojd()関数は、グレゴリオ暦(現在広く使われている暦)の日付をユリウス通日(Julian Day Count)に変換し、その結果としてユリウス日番号を返す関数です。ユリウス通日は、天文学や歴史上の日付計算などで利用される連続した日数表現であり、異なる暦同士の日付比較や計算を簡単に行えるのが特徴です。 注意 − グレゴリオ暦として有効な範囲は、紀元前4714年11月25日から紀元9999年12月31日以降までとなっています。この範囲外の日付を指定すると、正しい結果が得られない場合があります。 構文 GregorianToJD(month, date, year)

  2. PHPのfscanf()関数とは?使い方とフォーマット指定子を徹底解説

    PHPのfscanf()関数は、オープン中のファイルから入力を読み込み、指定されたフォーマットに従って解析するための関数です。パラメータを2つだけ渡して呼び出した場合、解析結果の値が配列として返されます。基本構文fscanf(file_pointer, format, mixed)パラメータの詳細file_pointer − fopen()関数を使って作成されたファイルシステムポインタリソースを指定します。format − 読み込むデータの形式(フォーマット)を指定します。使用できる主なフォーマット指定子は以下の通りです。%% − パーセント記号(%)そのものを返す%b − 2進数として読み込