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


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

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

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

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

概要

最大公約数を求めたい2つの整数をm, n(どちらか一方が0以上の整数、もう一方が正の整数)とすると、以下のような手順で、mnの最大公約数を求めることができる。

  1. n = 0の場合、mを最大公約数として終了する。n > 0の場合、2.へ進む。
  2. m ÷ nの余りをrとし、mnnrを代入する。
  3. 1.へ戻る。

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

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

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

  1. 693 > 0 より、728 ÷ 693 → 1 あまり 35
  2. 35 > 0 より、693 ÷ 35 → 19 あまり 28
  3. 28 > 0 より、35 ÷ 28 → 1 あまり 7
  4. 7 > 0 より、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(金) 00:00

ほめられた記事

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

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

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

OK

追加に失敗しました。

OK

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

           

ほめた!

すでにほめています。

すでにほめています。

ほめるを取消しました。

OK

ほめるに失敗しました。

OK

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

OK

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

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

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

TOP