Webで学ぶセンター試験数学−BASICプログラミング > ユークリッドの互除法

ユークリッドの互除法

最大公約数

最大公約数
 2つ以上の整数に共通な約数を公約数といい、その中で最大のものを最大公約数といいます。

[例] 24と60の最大公約数

 24の約数は、1, 2, 3, 4, 6, 8, 12, 24
 60の約数は、1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60

よって、24と60の最大公約数は12です。

(別解1)

   2 ) 24 72 
   3 ) 63  36 
   3 ) 21  12 
        7   4

よって、24と60の最大公約数は

   2×2×3=12

(別解2:因数分解の利用)

 24と60をそれぞれ素因数分解すると

   24=2×2×2×3
   60=2×2× ×3×5

となるので、24と60の最大公約数は

   2×2×3=12

 ところで、最大公約数がわかると何がうれしいのでしょうか?ここでは、簡単な例として、分数の約分との関係を紹介します。

(最大公約数の利用例)

 24/60という分数を約分することを考えます。少しずつ約分をすると

   24/60 = 12/30 = 6/15 = 2/5

となります。

 ここでは、24/60の分母と分子を2, 2, 3で割っていますが、12(=2×2×3)で割れば、一度で約分が完了します。そして、この12というのが分母60と分子24の最大公約数なのです!

 ここまで、小・中学生で学習した範囲の知識で最大公約数を求めてきましたが、実は2つの自然数の最大公約数を簡単に計算することができるアルゴリズムが存在します。これは、「ユークリッドの互除法」と呼ばれ、数学者ユークリッドの『原論』という書に記された歴史上最古のアルゴリズムと言われています。

ユークリッドの互除法

ユークリッドの互除法

 自然数a, bの最大公約数をgcd( a, b )とする。また、aをbで割った余りをrとすると、

   gcd( a , b ) = gcd( b , r )

が成立する。つまり、aとbの最大公約数は、bとrの最大公約数と等しい。

 この性質を利用して割り算を繰り返し、余りrが0になったときの除数bがaとbの最小公倍数になります。

 この説明だけで理解するのは難しいと思いますので、実際にユークリッドの互除法で最大公約数を計算して確認しましょう。

[例]

126と72の最大公約数を求める。

(方法1)

   2 ) 126 72 
   3 )  63  36 
   3 )  21  12 
         7   4

よって、126と76の最大公約数は

   2×3×3=18

(方法2:ユークリッドの互除法の利用)

   126÷72=1…54
    72÷54=1…18
    54÷18=3…0 ←余りが0になったら終わり
      ↑
      これが最小公倍数

【問題1】ユークリッドの互除法を用いて、2つの自然数の最大公約数を求めなさい。

(1) 24, 60

(2) 143, 221

(3) 6, 35

【問題2】ユークリッドの互除法

[プログラム]

    10  INPUT PROMPT "a,b=":A,B
    20  LET R=____________
    30  IF R<>0 THEN
    40    LET A=_
    50    LET B=_
    60    GOTO __
    70  END IF
    80  PRINT "GCD(a,b)=";_
    90  END

[出力結果]

・a=60, b=24の場合

  a,b=60,24
  GCD(a,b)= 12

・a=24, b=60の場合

  a,b=24,60
  GCD(a,b)= 12

[設問]

(1) 空欄を埋めてプログラムを完成させなさい。

(2) a=60, b=24を入力した場合、30行目は何回実行されるか。

(3) a=24, b=60を入力した場合、30行目は何回実行されるか。

[発展]

 このプログラムはa=60, b=24と入力しても、a=24, b=60と入力しても正しい最大公約数12が求まる。つまり、小さい数から大きい数を割ってそのあまりを求めるという計算を行っても答えは正しくなる。それはなぜか。

【問題3】分数の約分

 以下のプログラムは2つの分数A/B, C/D(A,B,C,Dは自然数)の和を計算し、分数の形で出力するものである。和の分数は最初に約分しない形でE/Fとして得られ、E,Fの最大公約数Gを求めて約分する。このプログラムでE,Fを計算し、それらの最大公約数Gを求める部分は[ア]行から[イ]行である。プログラムの中の空欄には選択肢から最も適切なものを選びその番号を答えなさい。

[プログラム]

    100  INPUT PROMPT "A=":A
    110  INPUT PROMPT "B=":B
    120  INPUT PROMPT "C=":C
    130  INPUT PROMPT "D=":D
    140  LET E=A*D+B*C
    150  LET F=B*D
    160  LET X=E
    170  LET Y=F
    180  LET R=X-Y*INT(X/Y)
    190  IF R=0 THEN GOTO 230
    200  LET X=[ウ]
    210  LET Y=[エ]
    220  GOTO 180
    230  LET G=Y
    240  PRINT E/G;"/";F/G
    250  END

[選択肢]

  (01) A (02) B (03) C (04) D (05) E
  (06) F (07) G (08) X (09) Y (10) R

[ヒント]

  E/F

※このヒントは入試問題にはありません。

(06 慶応大)


<< 前のページトップページ次のページ >>
inserted by FC2 system