現在の位置: ホーム> 最新記事一覧> PHPおよびGMP拡張機能を使用して、最大の共通除数と最小共通の多数の倍数を計算する方法

PHPおよびGMP拡張機能を使用して、最大の共通除数と最小共通の多数の倍数を計算する方法

M66 2025-06-18

導入:

プログラミングでは、多数の計算を処理することが一般的な要件です。ただし、従来の整数タイプの表現範囲が限られているため、オーバーフローの問題は、多数を扱うときに発生する傾向があります。 PHPのGMP(GNU多重精度)拡張は、あらゆる大型整数を処理できるソリューションを提供します。このチュートリアルでは、GMP拡張機能を使用して、最大の共通除数(GCD)と多数の最小共通の複数(LCM)を計算する方法を示し、これらの計算をコードの例で簡単に実装するのに役立ちます。

1. GMP拡張機能をインストールします

GMP拡張機能を使用するには、まずPHPがGMP拡張機能をインストールしていることを確認してください。 PHPがPHPINFO()関数を実行してGMPをインストールしているかどうかを確認できます。インストールされていない場合は、以下の手順に従うことができます。

  1. システムに合ったGMP拡張機能をダウンロードします。
  2. ダウンロードされたファイルを解凍します。
  3. 解凍されたファイルを、PHPソースコードextディレクトリの下にあるGMPディレクトリにコピーします。
  4. PHPソースルートディレクトリで次のコマンドを実行して、GMP拡張機能をコンパイルしてインストールします。
  5.  $ ./CONFIGURE -WITH-GMP
     $ make
     $ sudoはインストールします
  6. php.ini構成ファイルを追加します:
     extension = gmp.so
  7. PHPを再起動します。

2。最大の一般的な除数を計算します

Greatest Common visor(GCD)は、2つ以上の整数の共通除数の最大数を指します。 GMP拡張を使用して最大の一般的な除数を計算する方法は次のとおりです。

関数calculategcd($ a、$ b){
    $ a = gmp_init($ a);
    $ b = gmp_init($ b);
    return gmp_strval(gmp_gcd($ a、$ b));
}
$ a = "123456789012345678901234567890";
$ b = "987654321098765432109876543210";
$ gcd = calculategcd($ a、$ b);
エコー「最大の共通の取り除くinor:」。 $ gcd;

コード説明:

  1. GMP_INIT()関数を使用して、入力番号を型GMPの整数に変換します。
  2. GMP_GCD()関数を使用して、最大の共通除数を計算します。
  3. gmp_stral()関数を使用して、計算結果を文字列型に変換します。
  4. 最大の一般的な除数を出力します。

3.最小共通の倍数を計算します

最も一般的な倍数(LCM)は、2つ以上の整数で分割できる最小の正の整数を指します。次のコードの例を使用すると、2つの多数の最小共通倍数を計算できます。

関数calculatelcm($ a、$ b){
    $ a = gmp_init($ a);
    $ b = gmp_init($ b);
    $ gcd = gmp_gcd($ a、$ b);
    return gmp_strval(gmp_mul(gmp_div($ a、$ gcd)、$ b));
}
$ a = "123456789012345678901234567890";
$ b = "987654321098765432109876543210";
$ lcm = calculatelcm($ a、$ b);
エコー「最小共通倍数:」。 $ lcm;

コード説明:

  1. GMP_INIT()関数を使用して、入力番号を型GMPの整数に変換します。
  2. GMP_GCD()関数を使用して、最大の共通除数を計算します。
  3. GMP_DIV()関数を使用して、2つの数値の商を計算します。
  4. gmp_mul()関数を使用して、2つの数値の積を計算します。
  5. gmp_stral()関数を使用して、計算結果を文字列型に変換します。
  6. 最小コモン倍数を出力します。

結論は:

GMP拡張機能を使用することにより、最大の一般的な除数と多数の最小の倍数を簡単に計算できます。入力形式と出力形式の変換に注意してください。GMP拡張は、あらゆるサイズの整数に対処し、従来の整数タイプのオーバーフローの問題を回避するのに役立ちます。このチュートリアルが、より効率的に多数を実行するのに役立つことを願っています。