比較的かんたんな「あまり」の求め方(6)

概要

概要は(1)を御覧ください。

まとめ

思ったより長い道のりになってしまった。構想段階ではまとめを含めて(3)で終わるはずだったのだが。

それでは最後に、 表題の「あまり」の求め方の話をしよう。

今まで色々な数で割り切れるかを判定してきたが、余りがいくつになるかは話してこなかった。

実は、今までやった判定法で、 0 にならなかった場合はそれがそのまま余りになる。 ただし、交互和の場合はプラスマイナスを間違えないようにしなければならないことには注意。

長くなりすぎてしまったので、この証明や説明はここでは行わない。

代わりに、まとめとして、今までの判定方法の知識を使って、 改めて「余りを求める方法」として、以下で有名な数の余りの求め方を整理しよう。

用語整理

勢い込んでおきながら恐縮だが、今まで定義してきた用語を、図表を使いながらもう一度整理しておこう。 後述の「余りの求め方」を読む上では必須ではないが、一部読んでおくといい部分もある。

【数を並べた表】

Nで割り切れるかどうかを眺めて見るために、 10 ずつ(あるいは100や1,000ずつ)数を並べてみた表を、括弧付きで【数を並べた表】と特別に呼んでいた。 参考に、以下は N=7の場合の【数を並べた表】だ。

数の並び(の規則)

【数を並べた表】で、割り切れる数の並び方の規則を、「数の並び」もしくは「数の並びの規則」と呼んだ。

この規則には以下のようなものがある。

エスカレーター式の並び

2, 5, 4, 8 は、【数を並べた表】を眺めたとき、割り切れる数が上下に並んだ。

参考に、以下は 2 の表だ。

斜め 1 マスずつの並び、斜め左下/右下マスの並び

3, 9, 11 は、【数を並べた表】を眺めたとき、割り切れる数が斜めに並んだ。

参考に、以下は 3, 9 の表だ。

飛び飛びの斜めマスの並び

7 は、斜め 1 マスずつではないが、飛び飛びの規則的な並び方をした。

マス移動

【数を並べた表】で、マスを移動することを指す。 左右の移動は\pm{}1だが、上下の移動はいくつずつ数を並べたかによって変わる。 10 ずつ数を並べた表では \pm{}10 だし、 1,000 ずつ数を並べた表では \pm{}1,000 になる。

特に斜め 1 マスのところへの移動は、 斜め左下マス移動/斜め右下マス移動と呼んだ。

規則を崩さないマス移動

マス移動の中でも、【数を並べた表】でNで割り切れる数の並びの規則を崩さないようなマス移動のこと。

「上に a 回、左/右に b 回移動」などのパターンで定義された。

「表の一番上/左を目指す」(ONLY UP!/ONLY LEFT!)

規則を崩さないマス移動によって、最上位の数を消す(0にする)ことを「表の一番上を目指す」と呼んだ。 主に「上に 1 回、左/右に x 回移動」を利用する。

一方、規則を崩さないマス移動によって、最下位の数を消す(0にする)ことを「表の一番左を目指す」と呼んだ。 主に「上に x 回、左/右に 1 回移動」を利用する。

交互和

11 で割り切れるかの判定等のときに、大きな桁の数について、各桁を順番に足して引いてを繰り返しながら計算すること。

例えば、 123,456,789 という数字なら、交互和は以下のようになる。

 +1 -2 +3 -4 +5 -6 +7 -8 +9 = 5

単に交互和といった場合は、プラスから始めるかマイナスから始めるかは自由なので、答えはプラスマイナス2通りがありうる。

余りの求め方

以下では、今まで考えてきた割り切れるかどうかの判定法を使いながら、余りを求める方法を簡潔にまとめる。

2 で割った余り

  • 1 の位の数を見る。 (それ以上の位の数は無視できる。)
    • それが 2 の倍数 (0, 2, 4, 6, 8) なら、余りは 0。
    • それが 2 の倍数以外 (1, 3, 5, 7, 9) なら、余りは 1。

5 で割った余り

  • 1 の位の数を見る。 (それ以上の位の数は無視できる。)
    • それが 5 の倍数 (0, 5) なら、余りは 0。
    • それが 5 の倍数以外なら、余りはその数を 5 で割った余りとなる。

4 で割った余り

  • 10 の位までの数を見る。 (それ以上の位の数は無視できる。)
    • それが 4 の倍数 (0, 4, 8, 12, ... , 92, 96) なら、余りは 0。
    • それが 4 の倍数以外なら、余りはその数を 4 で割った余りになる。

8 で割った余り

  • 100 の位までの数を見る。 (それ以上の位の数は無視できる。)
    • それが 8 の倍数 (0, 8, 16, ... , 984, 992) なら、余りは 0。
    • それが 8 の倍数以外なら、余りはその数を 8 で割った余りになる。

3, 9 で割った余り

  • すべての位の数の和を求める。
  • その数 (またはその数を 3/9 で割った余り) が 3/9 で割った余りになる。
    • 例: 123 なら、  1 + 2 + 3 = 6 なので、
      • 3 で割った余りは 0。
      • 9 で割った余りは 6。
  • 計算の途中で余りを求めてもいい。
    • 例1: 123123 の 3 の余りについて考える。
      • 最初の 12 で 1+2=3 なので余りは 0。
      • 次の 3 は当然余りが 0。
      • 次の 123 も同様に繰り返せば余りは 0。
    • 例2: 12345678 の 9 の余りについて考える。
      • 一番下と一番上の桁から順に見ると、
        •  1+8=9\rightarrow{}0
        •  2+7=9\rightarrow{}0
        •  3+6=9\rightarrow{}0
        •  4+5=9\rightarrow{}0
      • なので、総和は余りが 0 になる。よって、元の数の余りも 0 になる。

11 で割った余り

(1) 交互和を使った方法

  • 1の位の数をプラスとして、各位の数の交互和を求める。
  • 交互和がマイナスになったときは、11を足す。
  • 交互和を 11 で割った余りを求める。これが元の数を 11 で割った余りになる。
    • 例1: 123 の場合、交互和は+1-2+3=2で、余りは 2。
    • 例2: 153 の場合、交互和は+1-5+3=-1。マイナスなので 11 を足して 10。なので、余りは 10。
    • 例3: 1234 の場合、交互和は-1+2-3+4=2で、余りは 2 (1 の位がプラスになるように符号を付けることに注意)。
    • 例4: 12344321 のように、数字が逆順で繰り返されている数の場合、交互和を取ったら 0 になるので、余りは 0 になる。

(2) 2桁ずつ区切る方法

  • 数を二桁ずつに区切る。 (このとき、各グループで 11 で割った余りを求めてもいい。)
  • 区切ったグループごとに数を足し合わせる。 (足し合わせる途中で 11 で割った余りを求めてもいい。)
  • 足し合わせた結果を 11 で割った余りを求める。これが元の数を 11 で割った余りになる。
    • 例1: 1234 の場合、 {12}, {34} に分けて足すと、 46 になって、 11 で割った余りは 2 になる。
    • 例2: 12345 の場合、
      • まず、 {1}, {23}, {45} に分けられる。
      • それぞれ 11 の余りを求めると、 {1}, {1}, {1} になる。
      • これらの和は 3 なので、11で割った余りも 3 になる。

7 で割った余り

(1) 3桁ずつの交互和の余り

  • 数を三桁ずつに区切る。 (このとき、各グループで 7 で割った余りを求めてもいい。)
  • 一番小さいグループをプラスとして、区切ったグループごとの交互和を求める。
  • 足し合わせた結果を 7 で割った余りを求める。これが元の数を 7 で割った余りになる。
    • 例1: 123456 の場合を考える。
      • まず、 {123}, {456} に分けられる。
      • 交互和は -123+456=333 になる。
      • 333=329(=7\times{}47)+4なので、余りは4。
    • 例2: 123123 の場合、 {123}, {123} に分けられて、明らかに交互和が 0 になり、余りも 0 になる。
      • このように、 3 桁ずつ数字が繰り返される場合、必ず 7 で割り切れる。

(2) 表の一番上を目指す/ONLY UP! 方式

  • 一番上の桁を見る。 ... (A)
    • 一番上の桁の 3 倍と、その次の桁の数の和を求める。
      • 和が 2 桁になった場合は、もう一度その和について (A) を行ってもよい。
      • このとき、 7 で割った余りを求めてもよい。
    • こうして求めた数を新たに一番上の桁の数として、(A) に戻る。
  • (A) を一番下の桁の数まで繰り返して得た数が、元の数を 7 で割った余りである。
    • 例: 123 の場合を考える。
      • (A-1) 1 \times 3 + 2 = 5
      • (A-2) 5 \times 3 + 3 = 18
      • (A-2') 1 \times 3 + 8 = 11
      • 11 ã‚’ 7 で割った余りは 4 なので、 123 ã‚’ 7 で割った余りは 4。

(3) 表の一番左を目指す/ONLY LEFT! 方式

  • 一番下の桁を見る。 ... (A)
    • それより上の桁の数から、一番下の桁の数の 2 倍を引く。
    • こうして求めた数を新たな数として、(A) に戻る。
  • (A) を一番上の桁の数まで繰り返して得た数が、元の数を 7 で割った余りである。
    • 例: 1234 の場合を考える。
      • (A-1) 123 - 4 \times 2 = 115
      • (A-2) 11 - 5 \times 2 = 1
      • なので、 1234 ã‚’ 7 で割った余りは 1。

一般化

(1) 桁で区切ってグループ同士の和/交互和の余り

  • 以下の表に従い、 N に該当する項目を確認する。
    • 両方とも 0 の場合は、この方法は使えない。

  • 「斜め右下マス並び」に数がある場合:
    • 表の数の桁に数を区切る。
    • 区切ったグループごとの和を求めから、その余りを求める。
  • 「斜め左下マス並び」に数がある場合:
    • 表の数の桁に数を区切る。
    • 区切ったグループごとの交互和を求めから、その余りを求める。

当たり前だが、区切る桁数が大きいものも使い物にならない。 扱う数の大きさにもよるが、使えそうなのはせいぜい 3~4 以下だろう。

1桁で区切れる特殊ケースが、 3, 9, 11 の判定法であるとも言える。

(2) 表の一番上を目指す/ONLY UP! 方式

  • N より大きい、最小の [tex:10k] を求める。
    • つまり、 [tex:N<1000...00=N<10k] となる最小の 1000...00。
    • 例えば、 N=19 の場合、 100 (k=2)。
  • [tex:10k] ã‚’ N で割った余り R を求める。
    • 例えば、 N=19 の場合、 100 ã‚’ 19 で割った余りは R=5。
  • 上から (k+1) 桁に注目する。...(A)
    • 一番上の桁の R 倍とそれ以外の数の和を求める。
      • 和が (k+1) 桁になった場合は、もう一度その和について (A) を行ってもよい。
      • このとき、 N で割った余りを求めてもよい。
    • こうして求めた数を新たに一番上の桁の数として、(A) に戻る。
  • (A) を一番下の桁の数まで繰り返して得た数が、元の数を N で割った余りである。

向いている数としては、 10...0 の形の数に近い倍数を持っている数 (999 とか)。 逆に、 61 とかは向いていない (100 に対して余り R=39 になってしまう)。

10 区切りで R=1となる特殊ケースが、 3, 9 の判定法であるとも言える。

(3) 表の一番左を目指す/ONLY LEFT! 方式

  • N が【奇数である】かつ【5 の倍数でない】ことを確かめる。
    • 偶数や5の倍数の場合は使えない。
  • 以下の x または y で、小さい方を求める。
    • x: N (の 1 の位) の倍数で 1 の位が 1 になる数から、 1 の位を除いた数。
    • y: N (の 1 の位) の倍数で 1 の位が 9 になる数から、 1 の位を除き、 1 加えた数。
      • 例: N=7 なら、 21 (=20+1) と 49 (=50-1) が該当し、 1 の位を除いて、 x=2、 y=5 となる。小さい方は x=2。
  • [1] x を選んだ場合:
    • 1 の位に注目する。 ... (A)
      • 1 の位を削除する。
      • 削除した数の x 倍を残った数から引き、 (A)に戻る。
        • このとき、N の倍数は自由に足し引きしてよい。
  • [2] y を選んだ場合:
    • 1 の位に注目する。 ... (A)
      • 1 の位を削除する。
      • 削除した数の y 倍を残った数に足し、 (A)に戻る。
        • このとき、N の倍数は自由に足し引きしてよい。
  • (A) を一番上の位の数まで繰り返して得た数が、元の数を N で割った余りである。

x と y は、下表を使って求めても良い。

N が大きくが大きくなるにつれて単調増加していく傾向があるので、 あまり大きな N には向かない。せいぜい 17, 19, 21 等の補完につかうくらいか。