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 ミリ秒
-
前の記事
docker composeで「Focalboard」を構築する 2021.12.09
-
次の記事
C# 配列の重複データを除いて結合する 2021.12.09
コメントを書く