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

PHPのgmp_jacobi()関数とは?ヤコビ記号の計算方法をわかりやすく解説

PHPのgmp_jacobi()関数は、2つのGMP数に対してヤコビ記号(Jacobi symbol)を計算するための関数です。ヤコビ記号は、数論において素数判定や平方剰余の評価などに用いられる重要な概念で、ルジャンドル記号を一般化したものです。

構文

gmp_jacobi($n1, $n2)

パラメータ

  • n1 − 計算対象となる最初のGMP数。PHP 5.6以降ではGMPオブジェクトを指定でき、数値文字列も使用可能です。

  • n2 − 計算対象となる2番目のGMP数。こちらもPHP 5.6以降でGMPオブジェクトを指定でき、数値文字列にも対応しています。

なお、正確な結果を得るためには n2 には正の奇数を指定する必要がある点に注意してください。

戻り値

gmp_jacobi()関数は、計算結果をGMP数(GMPオブジェクト)として返します。戻り値は以下のいずれかになります。

  • -1:n1がn2を法として平方非剰余である場合

  • 0:n1とn2の最大公約数が1でない場合

  • 1:n1がn2を法として平方剰余である場合

使用例

次のコードは、gmp_jacobi()関数を使って2つのGMP数のヤコビ記号を求める例です。

<?php
   $n1 = gmp_init(2);
   $n2 = gmp_init(3);
   $a = gmp_jacobi($n1, $n2);
   echo $a;
?>

出力結果

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

-1

この例では、gmp_init()を使って整数「2」と「3」をそれぞれGMP数に変換し、そのヤコビ記号を計算しています。結果として「-1」が出力されたため、2は3を法とした平方非剰余であることが分かります。

  1. PHPのgmp_div_q()関数とは?GMP数値の除算方法をわかりやすく解説

    gmp_div_q() 関数は、PHPのGMP拡張モジュールが提供する関数の一つで、大きな整数(GMP数値)同士の除算を行い、その商(割り算の結果)を求めるために使用されます。通常の整数型では扱えない桁数の巨大な数値を正確に計算したい場合に非常に便利です。 構文 gmp_div_q(n1, n2, rounding_mode) パラメータ n1 − 割られる側の最初のGMP数値です。PHP 5.6以降ではGMPオブジェクトを指定でき、それ以前のバージョンや一般的な用途では数値文字列も使用可能です。 n2 − 割る側となる2番目のGMP数値です。こちらもPHP 5.6以降ではGMPオブジェクト

  2. PHPのgmp_and()関数とは?ビット演算ANDの使い方を解説

    PHPの gmp_and() 関数は、2つのGMP数値に対してビット単位のAND(論理積)演算を行い、その結果を返す関数です。GMPライブラリを使用することで、通常の整数型では扱えない大きな数値でも正確にビット演算が可能になります。構文gmp_and($n1, $n2)パラメータn1 − 1つ目のGMP数値。PHP 5.6以降ではGMPオブジェクトを指定できます。数値形式の文字列も渡すことが可能です。n2 − 2つ目のGMP数値。こちらも同様に、PHP 5.6以降ではGMPオブジェクト、または数値形式の文字列を指定できます。戻り値gmp_and() 関数は、ビット単位のAND演算の結果をGMP