php gmp_gcdで最大公約数を求める

  • 作成日 2020.12.12
  • 更新日 2023.01.16
  • php
php gmp_gcdで最大公約数を求める

phpで、gmp_gcdを使用して、最大公約数を求めるサンプルコードを記述してます。「php-gmp」を使用して取得します。phpのバージョンは8.0です。

環境

  • OS  CentOS Linux release 8.0.1905 (Core)
  • php 8.0.0
  • nginx 1.14.1

gmpインストール

インストールされていない場合は、インストールしておきます。webサーバーで利用する場合は、webサーバーも再起動します。

sudo dnf install php-gmp

// nginxを再起動
sudo systemctl restart nginx

windowsの場合は「php.ini」の以下をコメントアウトを外して有効して利用しているwebサーバーを再起動します。

extension=gmp

gmp_gcd使い方

gmp_gcdを使用すれば、最大公約数を求めることが可能です。

gmp_gcd("数値", "数値")

以下は、最大公約数を求めるサンプルコードとなります。

<?php

$result = gmp_gcd("15", "45");

echo $result . PHP_EOL;
// 15

gmp_gcpを使用しなければ、以下のような関数を使用することも可能です。

function gcd($x,$y) {
    return ($x % $y) ? gcd($y,$x % $y) : $y;
}

$result = gcd("15", "45");

echo $result . PHP_EOL;
// 15

gmp_gcdと、作成した関数では、gmp_gcpを使用した方が、パフォーマンスも良さそうです。

【参考】 同じコードを1000万回実行した結果

測定結果 : gcd
process time: 8.68974 ミリ秒

測定結果 : gmp_gcd
process time: 6.19980 ミリ秒