PHP および GMP チュートリアル: 大きい数のオイラーの換算累乗を計算する方法
オイラーの合計関数は、整数論における一般的な関数であり、特定の数以下の正の整数を計算するために使用されます。 n と相対的に素な数 n の数。大きな数のオイラーべき乗を計算する場合、データ量が大きいため、通常の計算方法を直接使用することはできず、PHP の GMP (GNU Multiple Precision) 拡張機能を使用して演算を実行する必要があります。この記事では、PHP と GMP を使用して大きな数のオイラー換算累乗を計算する方法を紹介し、コード例を示します。
まず、PHP 拡張機能のディレクトリを確認し、phpinfo() 関数を実行すると、現在の PHP 設定情報を確認できます。表示された構成情報で「extension_dir」を見つけて、拡張機能ディレクトリのパスを記録します。
次に、GMP 公式 Web サイト (https://gmplib.org/) から GMP ライブラリのソース コードをダウンロードし、ローカルに解凍します。
コマンド ライン ウィンドウを開き、解凍された GMP ディレクトリを入力します。
次のコマンドを実行してコンパイルしてインストールします。
$ ./configure $ make $ make install
インストールが完了したら、コンパイルされた GMP 拡張ファイル (通常は gmp.so または gmp.dll) を、以前に記録した拡張子にコピーします。ディレクトリ。
php.ini ファイルを編集し、ファイルの最後に次の行を追加します。
extension=gmp
php.ini ファイルを保存して閉じます。
新しい GMP 拡張機能を有効にするには、Web サーバーを再起動します。
<?php function euler_power($base, $exponent, $modulus) { $result = gmp_init(1); while (gmp_cmp($exponent, 0) > 0) { if (gmp_even($exponent)) { $base = gmp_powm($base, 2, $modulus); $exponent = gmp_div_q($exponent, 2); } else { $result = gmp_mul($result, $base); $exponent = gmp_sub($exponent, 1); } } return gmp_mod($result, $modulus); } // 示例用法 $base = gmp_init(23456789); $exponent = gmp_init(98765432); $modulus = gmp_init(1234567891); $result = euler_power($base, $exponent, $modulus); echo gmp_strval($result); ?>
上記のコード例では、オイラーの換算電力を計算するために、euler_power という名前の関数を定義します。この関数は、基数、指数、および係数の 3 つのパラメータを受け入れます。この関数は、ループと条件判定を使用してインデックスのパリティを決定し、パリティに基づいて対応する演算を実行し、最終的に計算結果を返します。
使用例では、gmp_init 関数を使用して、基数、指数、および法を GMP の整数型に変換します。次に、euler_power 関数を呼び出してオイラーの換算電力を計算し、gmp_strval 関数を使用して計算結果を文字列に変換して出力します。
注: GMP 関数を使用する場合、パラメータの型は GMP の整数型である必要があります。そうでない場合はエラーが発生します。したがって、変数を定義するときは、gmp_init 関数を使用して、GMP の整数型に変換する必要があります。
以上がPHP および GMP チュートリアル: 大きな数のオイラー換算を計算する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。