web-dev-qa-db-ja.com

JS最大公約数を見つける方法

JavaScriptを使用して最大の公約数を見つけたいです。

誰もが前にそれをやったし、喜んで共有しますか?

36
bboy

これが再帰的な解決策です。

var gcd = function(a, b) {
    if ( ! b) {
        return a;
    }

    return gcd(b, a % b);
};

基本ケースは、b0と等しい場合です。この場合、aを返します。

再帰するとき、入力引数を交換しますが、a / bの残りを2番目の引数として渡します。

76
alex

ウィキペディアから取得。

再帰的:

function gcd_rec(a, b) {
    if (b) {
        return gcd_rec(b, a % b);
    } else {
        return Math.abs(a);
    }
}

反復:

function gcd(a,b) {
    a = Math.abs(a);
    b = Math.abs(b);
    if (b > a) {var temp = a; a = b; b = temp;}
    while (true) {
        if (b == 0) return a;
        a %= b;
        if (a == 0) return b;
        b %= a;
    }
}
  • ユーザーのコメントごとに編集
22
Yannis
function egcd(a, b) {
    if (a == 0)
        return b;

    while (b != 0) {
        if (a > b)
            a = a - b;
        else
            b = b - a;
    }

    return a;
}
9
Amani