【PHP】最大公約数を求める関数

PHP

はじめに

最大公約数を求める二つの方法について説明します。初めのものは自分用に作ったものです。ですが皆さんは二つ目のgmp_gcdを利用しましょう。

ユークリッドの互除法

function gcd($a,$b)
{
    $A = (int)$a;
    $B = (int)$b;
    $A = (float)$A;
    $B = (float)$B;
    if($a == $A && $b == $B)/*小数が入力された場合0を返す*/
    {
        if($a < 0)
        {
           $a = -$a;/*負の数を正に直す*/
        }
        else if($b < 0)
        {
           $b = -$b;/*負の数を正に直す*/
        }
        if($a > $b) 
        {
           $t = $a;/*順序入れ替え*/
           $a = $b;
           $b = $a;
        }
        while($a !== 0)
        {
           $t = $a;/*ユークリッドの互除法*/
           $a = $b % $a;
           $b = $t;
        }
        return $b;
    }
    else
    {
        return 0;
    }
}

引数a,bを入れれば最大公約数を返してくれる関数です。

負の引数が入力されても正の数に直します。また引数に小数が入力された場合0を返します。

gmp_gcdを使う

次にgmpシリーズの関数gmp_gcdを使う方法です。

まずgmpをインストールする必要があります。インストール方法はこちら

$answer = gmp_gcd("16", "20");
echo $answer;

/*出力
4*/

使える関数は使っておけということでこっちのほうが断然オススメです。

以上です。ありがとうございました。

コメント

タイトルとURLをコピーしました