PHPのgmp_legendre()関数とは?使い方・パラメータ・戻り値を実例付きで解説
PHPのgmp_legendre()関数は、2つのGMP数(任意精度整数)に対してルジャンドル記号を計算するための関数です。ルジャンドル記号は数論における基本的な概念の一つで、ある整数が奇素数を法として「平方剰余」であるかどうかを判定する際に使われます。
計算結果は、次のいずれかの値として得られます。
- 0 - 第1引数が第2引数(素数)で割り切れる場合
- 1 - 第1引数が平方剰余である場合
- -1 - 第1引数が非平方剰余である場合
構文
gmp_legendre(n1, n2)
パラメータ
n1 - 第1のGMP数。PHP 5.6以降ではGMPオブジェクトを指定できます。数値文字列も使用可能です。
n2 - 第2のGMP数。PHP 5.6以降ではGMPオブジェクトを指定できます。数値文字列も使用可能です。
戻り値
gmp_legendre()関数は、計算結果をGMP数(PHP 5.5以前の場合)またはGMPオブジェクト(PHP 5.6以降の場合)として返します。
使用例1
まずは基本的な例を見てみましょう。
<?php
$n1 = 5;
$n2 = 5;
echo gmp_legendre($n1, $n2);
?>
出力結果:
0
この例では、$n1と$n2がどちらも5です。$n1が$n2で割り切れるため、ルジャンドル記号の値は「0」となります。
使用例2
続いて、別の例を確認してみます。
<?php
$n1 = 4;
$n2 = 3;
echo gmp_legendre($n1, $n2);
?>
出力結果:
1
4を3で割った余りは1であり、1は3を法とする平方剰余(1×1=1)に該当するため、結果は「1」になります。
補足
gmp_legendre()関数を利用するには、PHP環境にGMP拡張モジュールがインストールされている必要があります。また、大きな整数を扱う数論的な処理では、他のGMP系関数(gmp_jacobi()など)と組み合わせて使われることも多い関数です。
-
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オブジェクト
-
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