桁数の大きい数字どうしの掛け算を暗算する方法
桁数の大きい数字どうしの掛け算を暗算するにはたくさんの数字を記憶しないといけないからできないと思っている人はいないでしょうか?今回は3~4桁の数字を1つ覚えておくだけで大きい数字どうしの掛け算を暗算する方法を紹介します。筆者はこの方法で20桁×20桁の掛け算に成功しました。
はじめに
この記事で言う暗算は答え以外の数字を何も記入しないで問題を解くということです。問題文を覚えないので暗算中に問題文を見る必要があります。答えも全部は覚えないので計算した部分を出力して別の部分を計算するを繰り返します。
方法
まず3桁×3桁の掛け算で例を示します。797×853を計算します。
まずは1の位と1の位を掛けます。7×3は21です。21を10で割った余りの1を答えの1の位に書きます。商の2は覚えておきます。
次に10の位と1の位、1の位と10の位を掛けたものを覚えておいた2に足します。2+9×3+7×5で64となります。10で割った余りの4を10の位に書き商の6を覚えておきます。
次に100の位と1の位、10の位と10の位、1の位と100の位を掛けたものを覚えておいた6に足します。6+7×3+9×5+7×8で128となります。10で割った余りの8を100の位に書き商の12を覚えておきます。
次に100の位と10の位、10の位と100の位を掛けたものを覚えておいた12に足します。12+7×5+9×8で119となります。10で割った余りの9を1000の位に書き商の11を覚えておきます。
最後に100の位と100の位を掛けたものを覚えておいた11に足します。11+7×8で67となります。100000の位に6を10000のくらいに7を書き終わりです。
このように797×853を計算できました。だいたいイメージはつかめましたでしょうか?疑似コードにしてみるとこのようになります。
これは下の桁から順番に出力するアルゴリズムですが正しい答えを出力します。
アルゴリズムの考察
この計算方法を使うと大きな数どうしの掛け算を暗算することが現実的になります。しかし上の疑似コードでのが大きな数になりすぎると難しいでしょう。このがどのくらいの値まで大きくなるか解析しましょう。上の疑似コードででに足される数をとすると
です。よりでの計算が終わった時のの値は
です。より100桁×100桁の掛け算までは4桁の数字を1つ覚えておくだけでできます。
おまけ
実際にこの方法で20桁×20桁の掛け算をやってみた動画です。
(2020-6-7追記)
この方法は海外では有名でCriss-Cross Methodと呼ばれているそうです。
Criss-Cross Method of Multiplication
割り算もやってみました。