• 締切済み

ユークリッドの互除法がわからない

ユークリッドの互除法は、どうして割っていくと公約数が求められるのですか? 公約数を求めるやり方はわかったのですが、どうしてそうなるのかわかりません。 調べて説明や証明を読んでもチンプンカンプンでした。 わかりやすく教えていただけたら嬉しいです。 よろしくお願いします。

noname#26218
noname#26218

みんなの回答

  • lopk563
  • ベストアンサー率43% (14/32)
回答No.7

a=bq+r(0<=r<b)の時 aとbの最大公約数をm、bとrの最大公約数をnとする。 そうするとa=a'm、b=b'm      b=b''n、r=r''n  となる。 まずa=bq+rより r=a-bq=a'm-b'mq=m(a'-b'q) よってmはrの約数の一つだと分かる。つまりmはaとbの最大公約数というだけでなく、bとrの約数の一つでもある。言い換えればbとrの公約数の一つであると分かります。bとrの最大公約数はnだから、n以外のbとrの約数はnの約数となる。だからmもまたnの約数であると分かります。 次にa=bq+r=b''nq+r''n=n(b''q+r'')より nはaの約数の一つだと分かる。つまりnはbとrの最大公約数というだけでなく、aとbの約数の一つでもある。言い換えればaとbの公約数の一つであると分かります。aとbの最大公約数はmだから、m以外のaとbの約数はmの約数となる。だからnもまたmの約数であると分かります。 この二つのことから、mはnの約数であり、またnはmの約数であることが分かりました。この二つが同時に成り立つとは即ちm=nであることを意味しています(そうでなければ両立しません)。ゆえにa=bq+r(0<=r<b)の時、aとbの最大公約数mと、bとrの最大公約数はnは同じであると分かります。 まとめ:a=bq+r(0<=r<b)の時、最大公約数(a,b)=最大公約数(b,r) 目的は最大公約数(a,b)を求めることです。最大公約数(a,b)=?=?-?=?と繋げていきます。最大公約数(b、r)の次は規則的に考え、最大公約数(b、r)=最大公約数(r、bをrで割った余り)となります。こうしてどんどん繋げていき最終的に割り切れて=(c,0)となると(0=c×0より)最大公約数(c,0)=cとなり結果、最大公約数(a,b)=?=?=?=(c,0)=cとなり答えはcと求まります。 まずはa=bq+r(0<=r<b)の時、最大公約数(a,b)=最大公約数(b,r)となる理屈・論理を理解することだと思います。その後はその規則性で繋げていき答えが分かるという訳です。

参考URL:
http://www.h6.dion.ne.jp/~hsbook_a/index.html
回答No.6

No. 5 です。 > 18の中に6は3つ、12の中に6は2つあるわけですが、 > それを求めるときになぜ12で18を割ってみようという発想になるのかわかりません。 簡単に言えば、割り算の余りは、「公約数を保存する」からです。 さて、(以下、入力が面倒なので、かけ算の×は、* で代用します) 18 = 6 * 3 12 = 6 * 2 余りの計算をするために、「引き算バージョン」で説明します。 つまり、割り算の余り=引くだけ引いてみて、残った数 なので、結果は同じになります。 今回の場合も 18÷12=1...6 と、18-12=6 で、同じ結果になりますね。 さて、18-12 は、言い換えれば、 (6 * 3) - (6 * 2) です。 共通因数の「6」があるので、分配法則が使えます。 つまり、 18 - 12 = 6 * 3 - 6 * 2 = 6 * (3 - 2) です。 ここで注意すべきことは、分配法則によって、引き算答えは、必ず、 「共通因数(上の式では6)」×「それ以外の因数の差(上の式では 3 - 2)」の形に書けるということです。 1回の引き算の答えと、割り算の余りは、厳密には、「それ以外の引数の差」の部分が異なりますが、「引けるだけ引く」と同じ結果になります。 さて、引き算の結果を見ると、必ず「共通因数」の項が残ります。 つまり、引き算の結果には、「共通因数が保存される」ということですね。さて、共通因数=どちらの因数でもあるもの(の責ですね、本当は)=公約数です。 つまり、引き算の結果は、もともとの数の公約数を保存するということになります。 実際には、何回も引き算をするのは大変なので、これと同じ結果となる、割り算の余りを使うわけです。

回答No.5

互除法の「証明」の基礎として押さえておくべき性質は、 「a÷bのあまりが0のとき(つまり、割り切れるとき)bは、aの約数」ということです。 ついでにいえば、bはb自身の約数なので、このとき、bは、a,bの公約数となります。 次に、「aとbの公約数は、『bと(a÷b)のあまり』の公約数でもある」という性質です。 こちらは、少し説明が必要です。 a÷bの商をn、余りをrとすれば、 a=b×n + r と書けます。これはいいですか? これを、aとbの公約数xで割ってみましょう。 a÷xの余りは0 いいですね? xはaの約数でもありますから。 b÷xの余りは同じく0です。 さて、表現を変えて、a=b×n+r をxで割ってみましょう。(ここで、a÷xの余りは0だったことに注意) 前半のb×nをxで割ると、割り切れます(xはbの約数)つまり、後半の、rもxで割り切れる必要があります。(rがxで割り切れなければ、b×nがxで割り切れている以上、余りが出てしまう) つまり、rはxで割り切れることになります。 ここで、 「aとbの公約数は、『bと(a÷b)のあまり』の公約数でもある」が言えました。 この性質を使って、公約数を求めると、 1)a と b の公約数が知りたい 2)b と (a÷bのあまり) の公約数と同じ 3)1)に帰る つまり、 355 と 113 なら、 1) 355 と 113 の公約数が知りたい 2) 113 と (355÷113 の余り)の公約数だ 3) 113 と 16 の公約数が知りたい 4) 16 と (113÷16 の余り)の公約数だ 5) 16 と 1 の公約数だ 6) あ、公約数は、1だった(互いに素) という経路になります。 あと、この方法で、「最大」公約数が求まるというのは、もう少し説明が必要ですが。 あと、互除法のバリエーションとして、「互いに引く」ちうのもあります。 これは、「aとbの公約数は、aと(a-b)の公約数と等しい(ただし、引き算は大小関係でうまく方向をあわせる必要がありますが)という性質を使って、割り算をせずに公約数を求める方法です。 ただ、割り算の余りは、「引ききれるだけ引いて、残ったもの」でもあるので、やっていることは同じです。

noname#26218
質問者

お礼

ありがとうございます!なんとなくわかりました。 まだ理解できないのは、 たとえば18と12の最大公約数は6で、 18の中に6は3つ、12の中に6は2つあるわけですが、 それを求めるときになぜ12で18を割ってみようという発想になるのかわかりません。

  • yoikagari
  • ベストアンサー率50% (87/171)
回答No.4

忘れていた nは正の整数です。

noname#26218
質問者

お礼

ありがとうございます!

  • yoikagari
  • ベストアンサー率50% (87/171)
回答No.3

q_1はaをbで割ったときの商、r_1はaをbで割ったときの余り q_2はbをr_1で割ったときの商、r_2はbをr_1で割ったときの余り q_nはr_(n-2)をr_(n-1)で割ったときの商、r_nはr_(n-2)をr_(n-1)で割ったときの余り q_(n+1)はr_(n-1)をr_nで割ったときの商(このときの余りは0) 要するに、q_1,q_2,・・・,q_n,q_(n+1),r_1,r_2,・・・,r_nはすべて整数です。

noname#26218
質問者

お礼

なんとなくわかりました。 ありがとうございました!

  • yoikagari
  • ベストアンサー率50% (87/171)
回答No.2

私の知っている限り、一番やさしい証明を書いておきます。 多少の文字は覚悟してください。 「 実際に、aとb(ただしa≧b)で互防法を行ってみます。 a=b*(q_1)+r_1 b=(r_1)*(q_2)+r_2 ・・・ r_(n-2)={r_(n-1)}*(q_n)+r_n r_(n-1)=(r_n)*{q_(n+1)} でr_nがaとbの最大公約数になっていることが示せればいいわけです。 aとbの最大公約数をdとすると a=d*a'、b=d*b'とかけます(ただし、a'とb'は整数)。 r_1=a-b*(q_1)=d*{(a')-(b')*(q_1)} ですから、r_1もdで割り切れる。 したがって、r_1=d*k (ただし、kは整数) よって r_2=b-(r_1)*(q_2)=d*{(b')-k*(q_2)} となってr_2もdで割り切れることがわかる。 以上のようなことを繰り返すと、r_nもdで割り切れることがわかる。 よってr_n≦d・・・※ となります。 一方 r_(n-1)=(r_n)*{q_(n+1)} だから、r_(n-1)がnで割り切れる。 r_(n-2)={r_(n-1)}*(q_n)+r_n=r_n*[(q_n)+{q_(n+1)}] となってr_(n-2)もr_nで割り切れる。 以上を繰り返すと、r_2,r_1もr_nで割り切れることがわかる。 よって、r_1=(r_n)*k'、r_2=(r_n)*h'とかける。 (ただしk'とh'は整数) b=(r_1)*(q_2)+r_2=(r_n)*{(k')*(q_2)+h'} となってbもr_nで割り切れる。・・・△ よって、b=(r_n)*b"と書ける (ただしb"は整数) a=b*(q_1)+r_1=(r_n)*{(b")*(q_1)+(k')} となって、aもr_nで割り切れる・・・□ △と□よりr_nはaとbの公約数です。 公約数≦最大公約数ですからr_n≦d・・・○ となります ※と○よりr_n=d つまり、aとbの最大公約数がr_nであることが示されました。 」

noname#26218
質問者

お礼

ご回答ありがとうございます! ごめんなさい・・>_< わかりません。 q_1やr_1は何ですか?

noname#20377
noname#20377
回答No.1

公約数xを持つ二つの数Ax,Bxが存在する時、・・・※ Ax ÷ Bx = C ・・・・ D となるなら Ax - Bx * C = D (A- B * C ) x = D となりDもxを約数に持ちますから ※まで戻って見比べてみます 同様に 公約数xを持つ二つの数Bx,D=(A-B*C)xが存在する時、 ・・・・ D と BxをDで割った余りもxを公約数に持つことになります。「この処理を繰り返す間は比較される二つの数は必ずx以上で、その差はどんどん小さくなっていく。 最終的に割ったときのあまりが0になったとき、割る数がxになる」

noname#26218
質問者

お礼

ご回答ありがとうございます! >となりDもxを約数に持ちますから >※まで戻って見比べてみます どうして、Dもxを約数に持つと※まで戻って見比べてみるのですか? なにを見比べるのですか?

関連するQ&A

  • ユークリッドの互除法について

     ユークリッドの互除法を使って最大公約数、整数解を求められると聞いたのですが、イマイチ要領がつかめません。    もしよろしければ、どなたかユークリッドの互除法での最大公約数、整数解の求め方を教えてください。

  • ユークリッドの互除法について

    13を9で割ると 1.444…の循環小数で表せますが, このわり算の筆算ができる理由をユークリッドの互除法で説明したいと考えています。 ユークリッドの互除法について いくつかの文献を読みましたが どれも 最大公約数を求める方法として紹介されています。 筆算ができる理由としてユークリッドの互除法をどのように使えばよいか ご回答の程よろしくお願いします。

  • ユークリッド互除法の意義

    2つの数の最大公約数の求め方の1つとしてユークリッド互除法を学習しました。 しかし、最大公約数の求め方は素因数分解でも求められます。 共通に割り切れるもので割っていけばよいので、わざわざユークリッド互除法を使わなくてもいいのでは?と思うのですが、ユークリッド互除法を使うことのよさってあるのですか? 回答よろしくお願いいたします。

  • ユークリッド互除法

    29441と32934の最大公約数をユークリッド互除法で求めて答えが1とでました。さらに最小公倍数を求めろとあるのですが、ユークリッド法でどうやって最小公約数を求めるのですか?

  • ユークリッドの互除法

    ユークリッドの互除法の証明の一部なのですが aをで割った商をbあまりをrとすると a=bq+r であるので r=a-bq である。ここで、この右辺はa bの最大公約数でわり切れるのは、なぜか教えて下さい。あと a bの最大公約数がrとb の公約数でもあるのはなぜですか?お願いします。

  • ユークリッドの互除法

    二つの整数a,bの最大公約数dを、ユークリッドの互除法で求める方法は分かります。 そうして求めたdは、適当な数x,yを使い、d=ax+byで表せることも何とか分かります。 しかし、d=ax+byが与えられたとき、ユークリッドの互除法を使って、特殊解xとyをどうやって求めたらよいのかが分かりません。 これまでの書き込みを見ても理解ができませんでした。 どなたか分かりやすくお教えください。

  • ユークリッドの互除法

    ユークリッドの互除法がよくわかりません。 m>nとして(m=nならばm=gcd(m,n)) m=sn+t (n>t)とあらわせる。 ここでgcd(m,n)=gcd(n,t)となるのがわかりません。 これがわかったらあとはあまり部分が0になるまでやればそのときに最大公約数が出るというのはわかるのですが、、、

  • ユークリッドの互除法

    ユークリッドの互除法の処方でつまづいています。 どなたか教えて頂けませんか。 aとbは正の整数でb≦aの関係にある。 aとbの最大公約数gcd(a,b)。 この時gcd(a,b)=ax+byの解となる(x,y)のペアはいくついるのでしょうか? 直感ですと(x,y)は一つしか存在しないように感じるのですが、どうやって記述すればいいのでしょうか? よろしくお願いします。

  • ユークリッドの互除法

    ユークリッドの互除法をJavascriptで書こうとしてます。以下のように書いたのですが、うまく動きません。(45と60の最大公約数を求めるプログラム) <script> window.alert(gcd(45, 60)); function gcd(a, b){ var r=a%b; if(r==0){ return b; }else{ gcd(b, r); } } </script> undifinedとなってしまいます。どうしたら正確な答えが出るでしょうか?

  • ユークリッド互除法について

    ユークリッド互除法について詳しく勉強したいのですが、教えていただけないでしょうか? よろしくお願いします。