ホームページ >バックエンド開発 >PHPチュートリアル >PHP のべき乗剰余演算で大きな数値を正確に処理するにはどうすればよいですか?

PHP のべき乗剰余演算で大きな数値を正確に処理するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-12 14:08:16566ブラウズ

How Can I Handle Large Numbers Accurately for Modular Exponentiation in PHP?

PHP でのべき乗剰余演算のための大きな数値の処理

べき乗剰余演算は、フェルマー素数検定などのさまざまな数学的アプリケーションで不可欠な演算です。ただし、PHP で大きな数値を扱うと、課題が生じる可能性があります。

PHP で 2 つの大きな数値を乗算すると、結果が自動的に float にキャストされます。これは汎用演算には便利ですが、モジュラー値を扱う場合には問題になります。

$x = 62574 * 62574;
var_dump($x);          // float(3915505476) ... correct
var_dump($x % 104659); // int(-72945)  ... unexpected

PHP のモジュロ演算子は、float データ型が大きな整数を正確に表さないため、誤った結果を返します。

解決策: GMP ライブラリ

この問題を解決するには、 PHP の GMP (GNU Multi-Precision Library) 拡張機能。 GMP は、大きな数値を扱うために特別に設計された関数とデータ型を提供します。

Composer パッケージ マネージャーを使用して GMP をインストールできます:

composer require gmp

例:

use GMP;

$x = GMP::mul(62574, 62574);
var_dump($x);          // gmp("3915505476") ... correct
var_dump(GMP::mod($x, 104659)); // gmp("73714") ... correct

GMP は、乗算、加算、比較、剰余演算など、大きな数値を扱うための幅広い関数を提供します。これらの関数により、最も広範な計算でも正確な結果が保証されます。

以上がPHP のべき乗剰余演算で大きな数値を正確に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。