【JavaScript】最大公約数と最小公倍数を求める

JavaScript

【参考URL】


・http://moefeather.net/it/programming/2889/
・https://note.affi-sapo-sv.com/js-least-common-multiple.php

【最大公約数を求める】

最大公約数 - Wikipedia

ユークリッドの互除法

というのを使用すると最大公約数を求めることができるようです。

// aとbの最大公約数を求める
saidaiKoyaku = (a,b) => {
        //数値を代入
        var m = a;
        var n = b;

    // "m/n"ができない場合に数字を入れ替える
        if(n > m){
            var tmp = m;
            m = n;
            n = tmp;
        }

    //mをbで割った余りをmodに代入し、aにbを、bにmodを代入
    //bの値が0になるまで上記の捜査を繰り返す
        while(n !== 0){
            var mod = m % n;
            m = n;
            n = mod;
        }
        //繰り返しが終わった際のmの値がa,bの最大公約数
        return m;
    }

saidaiKoyaku(a,b);

このコードではmとnを比較した際にnのほうが大きかった場合、mとnを入れ替えるコードを入れています。
最初、下記のように記載したのですがうまく動きませんでした。

        if(n > m){
            m = n;
            n = m;
        }

上記のようなコードだと、”m = n”を実行した際に、mにnが代入されます。
その後、nにnが代入されるので結果としてmとnの値が同じになってしまいます。
これを回避するために、一時的に値を保存する変数を使用します。
そのため今回は”temp”を使用して、そこにmの値を格納しています。

【最小公倍数を求める】

最小公倍数は以下で求めることが可能です。

最小公倍数 = a × b ÷ aとbの最大公約数

//aとbの最小公倍数を求める
saishoKobai = (a,b) => {
    return a * b / saidaiKoyaku(a,b);
}

コメント

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