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 ミリ秒
-
前の記事
javascript 論理否定演算子(!)を使用してtrue・falseを使用する 2020.12.12
-
次の記事
React.js ライブラリ「use-countdown-timer」を使ってカウントダウンを実装する 2020.12.12
コメントを書く