インド式計算方法が話題になって久しいですが、インド式を改良してもう少しやりやすくした方法を提案したいと思います。
(MathJaxを使用しているので計算式の部分の表示が遅延しますが、仕様ですので画面の前でしばらくお待ちください)
1.計算の背景と原理
2桁の正の整数xとy1
\[
\left\{ \begin{array}{ll}
x=10a+b & (1\leq a,b \leq 9) \\
y=10c+d & (1\leq c,d \leq 9)
\end{array} \right.
\]
があったとするとx、yの積f(x,y)は二項展開を用いて
$$f(x, y)=xy= 100 \times ac + 10 \times (bc+ad) + 1 \times bd$$
と表せる。ここでbdは1桁または2桁の正の整数であるが、桁上がりを考慮するためにdiv(整数除算の商)とmod(整数除算の余り)演算子を用いるとbdは
$$ bd = ( bd\ \mathrm{div}\ 10)+ (bd\ \mathrm{mod}\ 10) $$
と書けるので
$$f(x, y)=100 \times ac + 10 \times [bc + ad + ( bd\ \mathrm{div}\ 10)] + 1 \times [bd\ \mathrm{mod}\ 10] $$
となる。これにより一の位を確定することができた。
同様に十の位も1桁の整数に確定したいので2、更にdiv 10とmod 10を用いると
$$ f(x,y) = 100 \times[ac +\{(bc + ad + ( bd \ \mathrm{div} \ 10)) \ \mathrm{div} \ 10\}] $$
$$ + 10 \times [\{bc + ad + ( bd \ \mathrm{div} \ 10)\} \ \mathrm{mod} \ 10 ] + 1 \times [bd \ \mathrm{mod} \ 10]$$
と表せる。ここで、100倍の項が上1桁または2桁、10倍の項が十の位、1倍の項が一の位に当たる。
2.上式を用いた積の具体的な算出方法
以下で具体的な数値や手順を用いて各項の計算方法および答えの出し方を説明する。
Q. 27 × 39 はいくつですか?
手順と答え.
・7×9=63なので、両手で6を表しておく(bd div 10)
・7×3+2×9を計算する。39ですね。(bc+ad)
・39に手で示しといた6を足す。45ですね。(bc + ad + bd div 10)
・手で5(45の下一桁)を示しておく((bc + ad + bd div 10) mod 10)3
・2×3+4を計算する。4は45の十の位。よって10ですね。(ac +(bc + ad + bd div 10) div 10 )
・答えの上2桁は10、十の位は5(手で表している)
・一の位は7×9の下一桁、すなわち3
答え 1053
10回以上試したが、なかなか精度が良い
3.2018年6月22日に思ったこと
LaTexが崩れていたので書き直して、ついでに大幅改定しました。5年前より衰えたせいか、脳が関数電卓を欲しております。だがこういう暗算方法もあるよなと改めて思ったので誰かピンときたら使ってあげてください。