ユークリッドの互除法とは、2つの自然数の最大公約数を求めるアルゴリズムである。
最大公約数を求めたい2つの自然数をr1, r2 (r1 ≧ r2)とすると、以下のような手順で、r1とr2の最大公約数を求めることができる。
剰余の代わりに減算を用いる方法もあるが、両者の間に本質的な差異は何もない。
ユークリッドの互除法は最古のアルゴリズムとしても有名だが、優れたアルゴリズムと言われる所以は手数の少なさにある。アルゴリズムを終了するのに十分な手数は、r2の桁数に比例するのである。具体的に言うと、r2の10進桁数の5倍だけ行うまでに、結果がわかる。紀元前の時代にここまで優れたアルゴリズムが存在したことは注目に値する。
728と693の最大公約数を求める。
728と693の最大公約数は、7。
uint getGCD(uint a, uint b) {
if(a < b)
return getGCD(b, a);
int r = a % b;
if(r == 0)
return b;
return getGCD(b, r);
}
int G(a,b){return a<b?G(b,a):(b>0?G(b,a%b):a);}
(define (gcd a b)
(if (= b 0)
a
(gcd b (remainder a b))))
急上昇ワード改
最終更新:2025/12/12(金) 14:00
最終更新:2025/12/12(金) 14:00
ウォッチリストに追加しました!
すでにウォッチリストに
入っています。
追加に失敗しました。
ほめた!
ほめるを取消しました。
ほめるに失敗しました。
ほめるの取消しに失敗しました。