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


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

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

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

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

概要

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

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

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

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

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

m n r
(1) 728 693 35
(2) 693 35 28
(3) 35 28 7
(4) 28 7 0
(5) 7 0 -

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

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

ここではC言語での実装例を記載する。他のプログラミング言語においても、ループ処理、再帰処理等が実装可能であれば大体同じようにして実装出来る。なお、引数 mn については前提条件(どちらか一方が0以上の整数、もう一方が正の整数)を必ず満たしているものとする。

ループ処理による実装

int getGCD(int m, int n) {
int r;
while (n != 0) {
r = m % n;
m = n;
n = r;
}
return m;
}

再帰処理による実装

int getGCD(int m, int n) {
if (n == 0) {
return m;
} else {
return getGCD(n, m % n);
}
}

再帰処理及び三項演算子による実装

int getGCD(int m, int n) {
return n == 0 ? m : getGCD(n, m % n);
}

関連動画

高校数学の範囲での証明方法である。

関連項目

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

おすすめトレンド

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

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

急上昇ワード改

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

ほめられた記事

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

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

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

OK

追加に失敗しました。

OK

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

           

ほめた!

すでにほめています。

すでにほめています。

ほめるを取消しました。

OK

ほめるに失敗しました。

OK

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

OK

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

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

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

TOP