ユークリッドの互除法 単語


ニコニコ動画でユークリッドの互除法の動画を見に行く

ユークリッドノゴジョホウ

これはリビジョン 1332386 の記事です。
内容が古い・もしくは誤っている可能性があります。
最新版をみる

ユークリッドの互除法とは、2つの自然数の最大公約数を求めるアルゴリズムである。

概要

最大公約数を求めたい2つの自然数をr1, r2 (r1 ≧ r2)とすると、以下のような手順で、r1とr2の最大公約数を求めることができる。

  1. r1 ÷ r2 の余りr3を求める。
  2. r2 ÷ r3 の余りr4を求める。
  3. この手順を、rn = 0になるまで繰り返す。
  4. rn-1がr1とr2の最大公約数である。

剰余の代わりに減算を用いる方法もあるが、両者の間に本質的な差異は何もない。

ユークリッドの互除法は最古のアルゴリズムとしても有名だが、優れたアルゴリズムと言われる所以は手数の少なさにある。アルゴリズムを終了するのに十分な手数は、r2の桁数に比例するのである。具体的に言うと、r2の10進桁数の5倍だけ行うまでに、結果がわかる。紀元前の時代にここまで優れたアルゴリズムが存在したことは注目に値する。

728と693の最大公約数を求める。

  1. 728 ÷ 693 → 1 あまり 35
  2. 693 ÷ 35 → 19 あまり 28
  3. 35 ÷ 28 → 1 あまり 7
  4. 28 ÷ 7 → 4 あまり 0

728と693の最大公約数は、7。

プログラミング言語での実装

Dによる実装

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);
}

Cによる実装

int G(a,b){return a<b?G(b,a):(b>0?G(b,a%b):a);}

Lispによる実装

(define (gcd a b)
      (if (= b 0)
a
(gcd b (remainder a b))))

関連項目

  • アルゴリズム
  • プログラミング関連用語の一覧

おすすめトレンド

ニコニ広告で宣伝された記事

記事と一緒に動画もおすすめ!
もっと見る

急上昇ワード改

最終更新:2025/12/12(金) 14:00

ほめられた記事

最終更新:2025/12/12(金) 14:00

ウォッチリストに追加しました!

すでにウォッチリストに
入っています。

OK

追加に失敗しました。

OK

追加にはログインが必要です。

           

ほめた!

すでにほめています。

すでにほめています。

ほめるを取消しました。

OK

ほめるに失敗しました。

OK

ほめるの取消しに失敗しました。

OK

ほめるにはログインが必要です。

タグ編集にはログインが必要です。

タグ編集には利用規約の同意が必要です。

TOP