| Home |
2010.03.06
「足して9になる数字」が四則演算すべての検算を驚くほど加速する理由
機械でやる計算も、入力ミスがあれば間違える。
入力をすべて再チェックするのもおっくうだ。というか、時間が下手すると2倍かかる。
ではいったい、どうすればいいのか?
■各桁の数字を1桁になるまで足し合わせる
検算の仕方に、問題(入力)の数字と答え(出力)についてそれぞれ、各桁の数字を1桁になるまで足し合わせるというやり方がある。
要はチェックサムだ。
説明するよりも例を見せる方がはやい。次の足し算をやってみる。
「各桁の数字を1桁になるまで足し合わせる」というのは、次のようなけいさんをすることである。
たとえば345なら
345→3+4+5=12→1+2=3
と、こんな感じ。
■実際に検算してみる
では,問題の345と456と568について、そして答えの1369について、
「各桁の数字を1桁になるまで足し合わせる」というのをやってみよう。
すると、こんな感じとなる。
上記の通り、問題の345と456と568について、それぞれを「各桁の数字を1桁になるまで足し合わせる」と、3と6と1になる。
今は足し算の問題だったから、3と6と1を足し合わせる。つまり
3+6+1=10→1+0=1
である。
同じように,答えの1369について、「各桁の数字を1桁になるまで足し合わせる」と
1+3+6+9=19→1+9=10→1+0=1
である。
1と1でチェックサムは同じだから、この計算は合っている、と検算できた。
■「足して9になる数」で検算を加速する
ところで「足して9になる数」を覚えておくと,足し算引き算が抜群に速くなる、というエントリーを以前書いた。
10秒で覚えられて計算がバツグンに速くなる方法 読書猿Classic: between / beyond readers

それをマスターしている人は、この検算法をさらに加速させることができる。
9や足して9になる数は省いて計算しなくても,同じ結果に到達できるからだ(理由は「何故これで検算できるか?」で後述する)。
試しに,今の例で,「9や足して9になる数は省いて」(下記では省くところに抹消線を入れた)みよう。
ご覧のとおり、同じ結果を得た。
■この検算法は四則演算すべてで使える
この検算法は、かけ算だろうが引き算だろうが割り算だろうが使える。
(例)かけ算 13,452 × 75,049 = 1,009,559,148
(問題側)
13,452 →1+3+4+5+2=15 →1+5=6
75,049 →7+5+0+4+9=25 →2+5=7
6×7=42 →4+2=6 ……この段階でもとの計算(足し算なら足し算、引き算なら引き算をするのがポイント)
(答え側)
1,009,559,148 → 1+0+0+9+5+5+9+1+4+8=42 →4+2=6
6=6で、この計算は合ってる、と検算できた。
「9や足して9になる数は省いて」(下記では省くところに抹消線を入れた)みよう。
(問題側)
13,452 →1+3+4+5+2=6
75,049 →7+5+0+4+9=7
6×7=42 →4+2=6 ……この段階でもとの計算(足し算なら足し算、引き算なら引き算をするのがポイント)
(答え側)
1,009,559,148 → 1+0+0+9+5+5+4+9+1+8=1+5=6
6=6で、この計算は合ってる、と検算できた。
入力をすべて再チェックするのもおっくうだ。というか、時間が下手すると2倍かかる。
ではいったい、どうすればいいのか?
■各桁の数字を1桁になるまで足し合わせる
検算の仕方に、問題(入力)の数字と答え(出力)についてそれぞれ、各桁の数字を1桁になるまで足し合わせるというやり方がある。
要はチェックサムだ。
説明するよりも例を見せる方がはやい。次の足し算をやってみる。
345 | |
456 | |
+) | 568 |
------------ | |
1369 |
「各桁の数字を1桁になるまで足し合わせる」というのは、次のようなけいさんをすることである。
たとえば345なら
345→3+4+5=12→1+2=3
と、こんな感じ。
■実際に検算してみる
では,問題の345と456と568について、そして答えの1369について、
「各桁の数字を1桁になるまで足し合わせる」というのをやってみよう。
すると、こんな感じとなる。
345 | →3+4+5=12→1+2=3 | |
456 | →4+5+6=15→1+5=6 | |
+) | 568 | →5+6+8=19→1+9=10→1+0=1 |
------------ | 3+6+1=10→1+0=1 | |
1369 | →1+3+6+9=19→1+9=10→1+0=1 |
上記の通り、問題の345と456と568について、それぞれを「各桁の数字を1桁になるまで足し合わせる」と、3と6と1になる。
今は足し算の問題だったから、3と6と1を足し合わせる。つまり
3+6+1=10→1+0=1
である。
同じように,答えの1369について、「各桁の数字を1桁になるまで足し合わせる」と
1+3+6+9=19→1+9=10→1+0=1
である。
1と1でチェックサムは同じだから、この計算は合っている、と検算できた。
■「足して9になる数」で検算を加速する
ところで「足して9になる数」を覚えておくと,足し算引き算が抜群に速くなる、というエントリーを以前書いた。
10秒で覚えられて計算がバツグンに速くなる方法 読書猿Classic: between / beyond readers
それをマスターしている人は、この検算法をさらに加速させることができる。
9や足して9になる数は省いて計算しなくても,同じ結果に到達できるからだ(理由は「何故これで検算できるか?」で後述する)。
試しに,今の例で,「9や足して9になる数は省いて」(下記では省くところに抹消線を入れた)みよう。
345 | →3+ | |
456 | → | |
+) | 568 | →5+6+8=19→1+ |
------------ | | |
1369 | →1+ |
ご覧のとおり、同じ結果を得た。
■この検算法は四則演算すべてで使える
この検算法は、かけ算だろうが引き算だろうが割り算だろうが使える。
(例)かけ算 13,452 × 75,049 = 1,009,559,148
(問題側)
13,452 →1+3+4+5+2=15 →1+5=6
75,049 →7+5+0+4+9=25 →2+5=7
6×7=42 →4+2=6 ……この段階でもとの計算(足し算なら足し算、引き算なら引き算をするのがポイント)
(答え側)
1,009,559,148 → 1+0+0+9+5+5+9+1+4+8=42 →4+2=6
6=6で、この計算は合ってる、と検算できた。
「9や足して9になる数は省いて」(下記では省くところに抹消線を入れた)みよう。
(問題側)
13,452 →1+3+
75,049 →7+
6×7=42 →4+2=6 ……この段階でもとの計算(足し算なら足し算、引き算なら引き算をするのがポイント)
(答え側)
1,009,559,148 → 1+0+0+
6=6で、この計算は合ってる、と検算できた。
数学入門 下 岩波新書 青版 396 (1960/10) 遠山 啓 商品詳細を見る |
数学ができるようになる算数ドリル (2007/06/29) 栗田 哲也 商品詳細を見る |
計算がらくになる実用数学 (1963/10) 波多 朝 商品詳細を見る |
(何故これで検算できるか)
■9で割った時の余りをもとめる
「各桁の数字を1桁になるまで足し合わせる」というのは、実は9で割った時の余りを計算しているのである。
手始めに、100を9で割ると余りはどうなるかを考えてみる。
100は99+1、つまり99と1に分けることができる。
そして99=11×9だから、9で割り切れる。
だから100を9で割った余りは1だ。。
では200を9で割ると余りはどうなるだろうか
200=2×100=2×(99+1)=2×99+2×1
99は9で割り切れる。2×99も9で割り切れる。するとあまりは、2×1=2である。
おなじことが1000や10000や100000………でも当てはまる。
321を9で割った余りを考えよう。
300=3×100=3×(99+1)=3×99+3×1
99は9で割り切れる。2×99も9で割り切れる。すると300を9で割った時の余りは、3×1=3である。
20=2×10=2×(9+1)=2×9+2×1
9は9で割り切れる。2×9も9で割り切れる。すると20を9で割った時の余りは、2×1=2である。
1を9で割った余りはいうまでもなく、1である。
321を9で割った余りは、3+2+1=1である。
つまり9で割った時の余りを知るには、各桁の数字を拾って合計すればよいのである。
■余りが分かったからどうだっていうのか?
余りで数を分類することは、人類は古くからやってる。一週間がそうだし(7で割った余り)、十二支もそうだ(12で割った余り)。
一週間や十二支を見ても分かる通り、余りで分類すると、同じ分類に入る数は、同じだけ離れて並んでいる。
たとえば9で割った余りの数が1のものを並べてみよう。例えば9で割った余りの数が1になる数たちは
1、10、19、28,37、46……
こんな感じだが,(当然ながら)9ずつ離れて並んでいる。ひっくり返して言えば、二つの数の差が9の倍数であるとき、その二つの数は同じグループに属すると言える。
ガウスという数学者は、このことをこんな風に書くことを提案した(しかも「この計算式を身につけた人ならまったく天才でさえ途方に暮れるようなこみ入った場合にも機械的に問題が解ける」とのコメントまで残している。)
a≡b(mod n)
こいつを合同式という。
合同式には、合同の記号≡の両側に、同じ数を足したり引いたり掛けたり割ったりしても、合同のままという性質がある。
9で割る場合を式で書くと
a≡b(mod 9)ならば、
a+c≡b+c(mod 9)
aーc≡bーc(mod 9)
a×c≡b×c(mod 9)
a÷c≡b÷c(mod 9)
ということである。
9で割った余りの数が1という例で言えば
1≡10(mod 9)だから、
1+c≡10+c(mod 9)
1ーc≡10ーc(mod 9)
1×c≡10×c(mod 9)
1÷c≡10÷c(mod 9)
ということである。cに何でもいいから整数を代入して確かめてみるといい。
この合同式をつかえば、「かけ算だろうが引き算だろうが割り算だろうが」、余りがおなじなら、同じグループに入ることが言える。だから検算に使える訳である。
■だったら別に9で割る以外でもいいじゃないか?
そのとおり。
しかし「9で割った余り」を求めるのが、各桁の数を足せばいいだけ(しかも9や足して9になるものは省ける)というおかげで大変計算が楽なので、よく使われるのである。9を省けるので九去法という。
他の数で割った余りを使うものでは、11で割るというものもある。
9で割った余りでの検算は、たとえば数字の位置が例えば百の桁と十の桁でひっくり返っていた場合等、検出できないという弱点がある。
十一去法は、九去法では見つけられない、桁の誤りなども見つけられるので併用するとより正確な計算ができる。
さて、どうやって11で割った余りを簡単に計算するかと言えば、右から数えて奇数桁目の数をすべて足し、そこから偶数桁目の数をすべて引くことで求められる。
たとえば1369ならば、11で割ったあまりは、+9+3−6−1=5となる(1369÷11 = 124あまり5。したがって
11×124+5=1369)。
■9で割った時の余りをもとめる
「各桁の数字を1桁になるまで足し合わせる」というのは、実は9で割った時の余りを計算しているのである。
手始めに、100を9で割ると余りはどうなるかを考えてみる。
100は99+1、つまり99と1に分けることができる。
そして99=11×9だから、9で割り切れる。
だから100を9で割った余りは1だ。。
では200を9で割ると余りはどうなるだろうか
200=2×100=2×(99+1)=2×99+2×1
99は9で割り切れる。2×99も9で割り切れる。するとあまりは、2×1=2である。
おなじことが1000や10000や100000………でも当てはまる。
321を9で割った余りを考えよう。
300=3×100=3×(99+1)=3×99+3×1
99は9で割り切れる。2×99も9で割り切れる。すると300を9で割った時の余りは、3×1=3である。
20=2×10=2×(9+1)=2×9+2×1
9は9で割り切れる。2×9も9で割り切れる。すると20を9で割った時の余りは、2×1=2である。
1を9で割った余りはいうまでもなく、1である。
321を9で割った余りは、3+2+1=1である。
つまり9で割った時の余りを知るには、各桁の数字を拾って合計すればよいのである。
■余りが分かったからどうだっていうのか?
余りで数を分類することは、人類は古くからやってる。一週間がそうだし(7で割った余り)、十二支もそうだ(12で割った余り)。
一週間や十二支を見ても分かる通り、余りで分類すると、同じ分類に入る数は、同じだけ離れて並んでいる。
たとえば9で割った余りの数が1のものを並べてみよう。例えば9で割った余りの数が1になる数たちは
1、10、19、28,37、46……
こんな感じだが,(当然ながら)9ずつ離れて並んでいる。ひっくり返して言えば、二つの数の差が9の倍数であるとき、その二つの数は同じグループに属すると言える。
ガウスという数学者は、このことをこんな風に書くことを提案した(しかも「この計算式を身につけた人ならまったく天才でさえ途方に暮れるようなこみ入った場合にも機械的に問題が解ける」とのコメントまで残している。)
a≡b(mod n)
こいつを合同式という。
合同式には、合同の記号≡の両側に、同じ数を足したり引いたり掛けたり割ったりしても、合同のままという性質がある。
9で割る場合を式で書くと
a≡b(mod 9)ならば、
a+c≡b+c(mod 9)
aーc≡bーc(mod 9)
a×c≡b×c(mod 9)
a÷c≡b÷c(mod 9)
ということである。
9で割った余りの数が1という例で言えば
1≡10(mod 9)だから、
1+c≡10+c(mod 9)
1ーc≡10ーc(mod 9)
1×c≡10×c(mod 9)
1÷c≡10÷c(mod 9)
ということである。cに何でもいいから整数を代入して確かめてみるといい。
この合同式をつかえば、「かけ算だろうが引き算だろうが割り算だろうが」、余りがおなじなら、同じグループに入ることが言える。だから検算に使える訳である。
■だったら別に9で割る以外でもいいじゃないか?
そのとおり。
しかし「9で割った余り」を求めるのが、各桁の数を足せばいいだけ(しかも9や足して9になるものは省ける)というおかげで大変計算が楽なので、よく使われるのである。9を省けるので九去法という。
他の数で割った余りを使うものでは、11で割るというものもある。
9で割った余りでの検算は、たとえば数字の位置が例えば百の桁と十の桁でひっくり返っていた場合等、検出できないという弱点がある。
十一去法は、九去法では見つけられない、桁の誤りなども見つけられるので併用するとより正確な計算ができる。
さて、どうやって11で割った余りを簡単に計算するかと言えば、右から数えて奇数桁目の数をすべて足し、そこから偶数桁目の数をすべて引くことで求められる。
たとえば1369ならば、11で割ったあまりは、+9+3−6−1=5となる(1369÷11 = 124あまり5。したがって
11×124+5=1369)。
inashiro
適当知識なので間違ってるかもしれませんが。
剰余環Z/mZは(あたりまえですが)環なので乗法に対する逆元が存在するとは限らない。
なので割り算が出来るかどうかも分かりません。
合同式で除算が成り立つのは以下のとき
a * c ≡ b * c (mod m)
でcとmが互いに素(±1以外に共通の約数をもたない)のとき
a ≡ b (mod m)
というか1÷c (cは任意の整数)なんてしたらc=±1以外では整数以外の数がでてきちゃいますよww
剰余環Z/mZは(あたりまえですが)環なので乗法に対する逆元が存在するとは限らない。
なので割り算が出来るかどうかも分かりません。
合同式で除算が成り立つのは以下のとき
a * c ≡ b * c (mod m)
でcとmが互いに素(±1以外に共通の約数をもたない)のとき
a ≡ b (mod m)
というか1÷c (cは任意の整数)なんてしたらc=±1以外では整数以外の数がでてきちゃいますよww
2010/03/06 Sat 16:10 URL [ Edit ]
| Home |