前回に引き続いて合同式を使った問題です。
想像もできないような桁をもつ巨大数を扱いますよ。
9999 なんて、Excel を使っても正確に計算することはできません。
問題26 9999 の 1 の位は? [高1★★☆☆☆]
(1) 9999 の 1 の位はいくつですか。(2) 19921992 の 1 の位はいくつですか。
[ヒント] 法 (mod) の選び方がポイントです。
≫ [Amazon書籍] スワップ取引(バーゼルV、CCP、CVA、FVA、OISカーブ)
解答26(10 で割ったときの余りを求めます)
1 の位を求めるということは、つまり 10 で割ったときの余りを求めるということです。よって法は 10 を選択します。(1) 99 ≡ 9 (mod 10) ですから、べき乗定理によって
99 ≡ 999 (mod 10)
が成立します。ここで
999 = 92 × 49 + 1 = (92 ) 49 × 9
のように書けますが、 92 ≡ 1 (mod 10) ですから乗算定理によって
999 ≡ 1 × 9 = 9 (mod 10)
が得られます。
[別解] 実はこの問題に関しては合同式を用いなくても簡単に解けます。
91 = 9, 92 = 81, 93 = 729, ......
というように 1 の位には 9 と 1 が交互に現れます。指数部分が奇数なら 9, 偶数なら 1 という規則になっていますね。よって 999 の 1 の位は 9 であることがわかります。
(2) さらに大きな桁が登場しましたね。しかしどれだけ数が大きくても (1) と同じ手法で解くことができます。そこが合同式のすごいところです。まず 1992 という数字に対して
1992 ≡ 2 (mod 10) (*)
が成り立ちます。そこで 21992 は
21992 = (24)498
と書けますから、24 について余りがわかればいいのです。
24 = 16 ≡ 6 (mod 10)
ですから、
(24)498 ≡ 6 (mod 10)
すなわち
21992 ≡ 6 (mod 10)
が成り立っていることがわかりました。 (*) を 1992 乗して
19921992 ≡ 21992 ≡ 6 (mod 10)
となるので 1 の位は 6 であることがわかります。
Excel には余りを求める mod 関数が用意されています
Excel を使える環境にある人は MOD 関数を使って合同式の勉強に役立ててみてください。=MOD(数値,除数)
と入力すると「数値」を「除数」で割ったときの「余り」を返してくれます。たとえば、
=MOD(32,6)
と入力すれば "2" という値が返ってきます。ただ冒頭にも述べたように、数字があまりに大きいとエラーになってしまいますから、残念ながら今回のような問題には使えないのです。どのぐらいの桁まで正確に計算できるのか、まだきちんと調べたことはありませんけど、そのあたりの事情に詳しい人はぜひコメントください。