現在の位置: ホーム> 最新記事一覧> PHPのgmp_legendre()関数の詳細な説明:正方形の残留および二次非修正を判断する方法

PHPのgmp_legendre()関数の詳細な説明:正方形の残留および二次非修正を判断する方法

gitbox 2025-06-10

gmp_legendre()関数は何ですか

PHPでは、 gmp_legendre()は、gmp拡張機能によって提供される関数であり、legendreシンボルを計算します。この関数は、特に整数がプライム弾性率の下の正方形残基であるかどうかを判断する場合、数の理論で広く使用されています。

関数定義は次のとおりです。

 int gmp_legendre(GMP $a, GMP $p)

ここで、 $ aは判断された整数であり、 $ pは奇妙なプライム番号であり、両方のパラメーターはGMPタイプでなければなりません。

Lejeuneシンボルの定義と意味

レジャンダーのシンボルは、整数がプライム弾性率の下で二次残留であるかどうかを示す数学的表記です。数学的定義は次のとおりです。

(a/p)= a (p?1)/2 mod p

ここでAは整数であり、 Pは奇妙な素数です。結果は次のとおりです。

  • 結果が1の場合、それはAがpの正方形残差であることを意味します。
  • 結果が?1の場合、それはAがpの二次非無修理派であることを意味します。
  • 結果が0の場合、 APに共通因子、またはa = 0があることを意味します。

gmp_legendre()関数の実際の使用

次に、2つの例を使用して、 gmp_legendre()を使用する方法を説明して、整数が正方形の残差か二次非修正かを判断します。

数字が二乗されているかどうかを判断します


$a = gmp_init(5);
$p = gmp_init(7);
$ls = gmp_legendre($a, $p);
if ($ls == 1) {
    echo "$a はい $p 残りの正方形";
} else {
    echo "$a 不はい $p 残りの正方形";
}

出力は次のとおりです。「5は残りの正方形7」です。

数値が二次的で非修正であるかどうかを判断します


$a = gmp_init(5);
$p = gmp_init(11);
$ls = gmp_legendre($a, $p);
if ($ls == -1) {
    echo "$a はい $p 二次非修正";
} else {
    echo "$a 不はい $p 二次非修正";
}

このコードの出力は次のとおりです。「5は11の二次非還元ではありません」。

gmp_legendre()を使用する場合のメモ

gmp_legendre()関数を呼び出す場合、次のポイントに注意する必要があります。

  • 両方のパラメーターは、型GMPの整数でなければなりません。
  • 2番目のパラメーター$ pは奇妙な素数でなければなりません。
  • この関数を使用する前に、PHPがGMP拡張機能をインストールおよび有効にしていることを確認してください。

要約します

GMP_LEGENDRE()は、整数がプライムモジュラスの下で正方形の残留であるかどうかを判断するのに適した実用的なPHP数学機能です。これは、PHPと数字の理論の組み合わせを学習するための優れたツールであるだけでなく、暗号化、アルゴリズム競争、その他の分野で実用的なアプリケーション値を持っています。それを使用する場合、GMPタイプとパラメーターの要件に注意を払う必要があり、Lejanderシンボルの計算を正常に完了できます。

参照

  • Liu Rujia。 「整数および多項式アルゴリズム」。北京:Tsinghua University Press、2008年。