php gmp_lcmで最大公倍数を求める

  • 作成日 2021.12.09
  • 更新日 2023.01.16
  • php
php gmp_lcmで最大公倍数を求める

phpで、gmp_lcmを使用して、最大公倍数を求めるサンプルコードを記述してます。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_lcm使い方

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

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

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

<?php

$result = gmp_lcm(15, 20);

echo $result . PHP_EOL;
// 60

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

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

function lcm($x, $y){
    return $x * $y / gcd($x, $y);
}

$result = lcm(15, 20);

echo $result . PHP_EOL;
// 60

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

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

測定結果 : lcm
process time: 12.11901 ミリ秒

測定結果 : gmp_lcm
process time: 4.97489 ミリ秒