背景 EditToHeaderToFooter

Twitterネタで面白い割算筆算の呟きが流れてきた。
https://twitter.com/onisci/status/830714852821721089
内容は、商の見積もりに失敗した場合の対策。

教科書には載ってないが、これはこれで便利な筆算である。
以下に、割算筆算で商の見積もりで過不足が発生する際の対応法を紹介する。

筆算例 EditToHeaderToFooter

まず初めに、引用元の呟きにある10618÷19を例として拝借します。

$$ \;\;\;\;\;\;558 $$

$$ \;\;\;\;\;\;\cancel{3}\cancel{4}\cancel{9} $$

$$ 19 $$

$$ \overline{)\;10618\;} $$

$$ \;\;\;\;57 $$

まずは57=19×3を引く

$$ \;\;\overline{\;\;49\;\;} $$

49>19で不足

$$ \;\;\;\;38 $$

追加で38=2×19を引く

$$ \;\;\overline{\;\;111\;\;} $$

$$ \;\;\;\;\;\;76 $$

38は無いから、とりあえず76=19×4を引く

$$ \;\;\;\;\overline{\cancel{\;\;35\;\;}} $$

35>19で不足、38も無いから19を1つ引けば足りる

$$ \;\;\;\;{\;\;168\;\;} $$

16=35−19と引いて、8を卸す

$$ \;\;\;\;\;\;\cancel{171} $$

168<171で過剰、とりあえず仮積から19を1つ減らす

$$ \;\;\;\;\;\;152 $$

171−19=152と引いて、修正した余り168から152を普通に引く

$$ \;\;\;\;\overline{\;\;\;\;16\;\;} $$

よって、$$ 10618 $$÷$$ 19 $$$$ 558 $$$$ \frac{16}{19} $$

解説 EditToHeaderToFooter

O: 過不足無しの場合 EditToHeaderToFooter

まず、用語の説明を兼ねて、過不足の無い理想的な割算筆算を確認する。

$$ \;\;\;\;\;\;558 $$

とりあえず仮商を5と置く

$$ 19 $$

$$ \overline{)\;10618\;} $$

$$ \;\;\;\;95 $$

とりあえず仮積95=除数19×仮商を計算

$$ \;\;\overline{\;\;111\;\;} $$

被除数から仮積を引き、0<仮余11<除数19の過不足無しで確定

$$ \;\;\;\;\;\;95 $$

  確定した余りに被乗数から1桁降ろして被乗数を新たに作って継続

$$ \;\;\;\;\overline{\;\;168\;\;} $$

$$ \;\;\;\;\;\;152 $$

$$ \;\;\;\;\;\;\overline{\;\;16\;\;} $$

途中、
  ・ 引いた結果が仮余>除数の場合は不足、
  ・ 仮積>被乗数で引けない、つまり、引いても仮余<0になる場合は過剰、
正しい商を得るためには、仮商を修正する必要が生じる。

A-1:1倍不足した場合 EditToHeaderToFooter

$$ \;\;\;\;\;\;5 $$

ゲ松4を斜線で消し、商を1つ多い5に修正

$$ \;\;\;\;\;\;\cancel{4} $$

とりあえず仮商を4と置く

$$ 19 $$

$$ \overline{)\;10618\;} $$

$$ \;\;\;\;76 $$

とりあえず仮積19×4を計算

$$ \;\;\overline{\cancel{\;\;30\;\;}} $$

とりあえず106から76を引いて、仮余30>19で不足を確認

$$ \;\;{\;\;111\;\;} $$
 

仮余を斜線で消し、余りを仮余から除数を引いた結果に修正
以降、被乗数から1を降ろして普通に継続

A+1: 1倍過剰した場合 EditToHeaderToFooter

不足な場合は余りを修正すれば良いが、
過剰な場合は負の余りを回避するためには、仮積を修正することになる。

$$ \;\;\;\;\;\;5 $$

げ松6を斜線で消し、1つ少ない5に修正

$$ \;\;\;\;\;\;\cancel{6} $$

とりあえず仮商を6と置く

$$ 19 $$

$$ \overline{)\;10618\;} $$

$$ \;\;\cancel{114} $$

とりあえず仮積19×6を計算し、114>106で過剰を確認

$$ \;\;\;\;95 $$

仮積を斜線で消し、仮積から乗数を引いた数に修正

$$ \;\;\overline{\;\;111\;\;} $$

被除数から修正後の積を引き、11<19を確認
以降、被乗数から1を降ろして普通に継続

A-2: 2倍以上不足した場合 EditToHeaderToFooter

要は1倍不足した場合の連続適応。
実質上、先頭1桁と九九で商を大体±1の範囲に抑えられるため、
運悪く2倍不足したときにもう一回引いやるかーという感覚で良い。

$$ \;\;\;\;\;\;5 $$

ゲ松3を斜線で消し、商を2つ多い5に修正

$$ \;\;\;\;\;\;\cancel{4} $$

とりあえず仮商を3と置く

$$ 19 $$

$$ \overline{)\;10618\;} $$

$$ \;\;\;\;57 $$

とりあえず仮積19×3を計算

$$ \;\;\overline{\cancel{\;\;49\;\;}} $$

とりあえず106から57を引いて、仮余49>19で不足を確認

$$ \;\;\cancel{\;\;30\;\;} $$

仮余を斜線で消し、仮余から除数19を引いく。

$$ \;\;{\;\;111\;\;} $$
 

仮余を斜線で消し、更に除数19を引いて、11<19を確認。
以降、被乗数から1を降ろして普通に継続

A+2: 2倍以上過剰した場合 EditToHeaderToFooter

1倍過剰した場合の連続適応。
被乗数から仮積を引けるまで、仮積から除数を引き続けば良い。

$$ \;\;\;\;\;\;5 $$

ゲ松7を斜線で消し、2回引いたので2少ない5に修正

$$ \;\;\;\;\;\;\cancel{7} $$

とりあえず仮商を7と置く

$$ 19 $$

$$ \overline{)\;10618\;} $$

$$ \;\;\cancel{133} $$

とりあえず仮積19×7を計算し、仮余133>106で過剰を確認

$$ \;\;\cancel{114} $$

過剰なんで、仮積から除数を引く

$$ \;\;\;\;95 $$

まだ過剰なんで、更に除数を引き、95<106で引けることを確認

$$ \;\;\overline{\;\;111\;\;} $$
 

106から修正した仮積95を引き、11<19で過不足無しを確認
以降、被乗数から1を降ろして普通に継続

B-2: 2倍以上不足した場合(追加引き) EditToHeaderToFooter

正しい商を当てる努力してれば±1に抑えられるが、
端から当てようとせず、2倍や3倍、5倍など計算しやすい数で加減する作戦も実用的である。
その場合、修正が大きくなりうるため、追加で仮積を加減する手法が使える。

$$ \;\;\;\;\;\;5 $$

げ松3を斜線で消し、2倍多い5に修正

$$ \;\;\;\;\;\;\cancel{3} $$

とりあえず仮商を3と置く

$$ 19 $$

$$ \overline{)\;10618\;} $$

$$ \;\;\;\;57 $$

とりあえず仮積19×3を計算

$$ \;\;\overline{\;\;49\;\;} $$

とりあえず106から57を引いて、仮余49>19で不足を確認

$$ \;\;\;\;38 $$

追加で仮積19×2を計算

$$ \;\;\overline{\;\;111\;\;} $$
 

仮余から追加の仮積を引き、11<19で過不足無しを確認
以降、被乗数から1を降ろして普通に継続

(参考)B+2: 2倍以上過剰した場合(追加足し、負の余り) EditToHeaderToFooter

仮商が過剰した場合、とりあえず引いては余りが負になる。
ただ、形式上では下から上を逆に引けば、通常の減算の筆算の手順で済む。
また、負の余りの修正に仮積を加えるが、これも下から上を逆に引く減算で済む。

$$ \;\;\;\;\;\;5 $$

げ松7を斜線で消し、2倍少ない5に修正

$$ \;\;\;\;\;\;\cancel{7} $$

とりあえず仮商を7と置く

$$ 19 $$

$$ \overline{)\;10618\;} $$

$$ \;\;133 $$

とりあえず仮積19×7を計算し、仮余133>106で過剰を確認

$$ \;\;\overline{\iro[ak]{\!-27\;\;}} $$

とりあえず逆に133から106を引く

$$ \;\;\!+38 $$

追加で仮積19×2を計算

$$ \;\;\overline{\;\;111\;\;} $$
 

追加の仮積から仮余を逆に引き、11<19で過不足無しを確認
以降、被乗数から1を降ろして普通に継続

例では、106が余り、133が仮積、38が補正で、結局は106−133+38=11を計算しているが、
逆引きによって形式上では38−(133−106)=11と、負の数を扱わない操作になっている。

また、計算途中では負の余りが現れるが、現れる余りは全て除数倍違いであるため、
これは負の数の除余への自然な拡張となっている。

(遊び)C+2: 2倍以上過剰した場合(追加足し、補数表現) EditToHeaderToFooter

B+2では負の余りに対し、逆引きで負の数を扱わずに済ませているが、
実は、補数表現を使えば、そのまま上から引いても正しい答えを出せる。
ただし、補数表現は一般的ではないので、この方法は実際使われることはない*1

$$ \;\;\;\;\;\;5 $$

げ松7を斜線で消し、2倍少ない5に修正

$$ \;\;\;\;\;\;\cancel{7} $$

とりあえず仮商を7と置く

$$ 19 $$

$$ \overline{)\;10618\;} $$

$$ \;\;133 $$

とりあえず仮積19×7を計算し、仮余133>106で過剰を確認

$$ \iro[ak]{\cdot\cdot}\overline{\iro[ak]{973\;\;}} $$

とりあえず106から133を引く、無理やり引く。詳細は後述。

$$ \;\;\!+38 $$

追加で仮積19×2を計算

$$ \;\;\overline{\;\;111\;\;} $$
 

補正の仮積を普通に足す、11<19で過不足無しを確認
以降、被乗数から1を降ろして普通に継続

10の補数表現による負の数の表現 EditToHeaderToFooter

途中で出てくる$$ \cdot\cdot973 $$がB+2で出した$$ -27 $$の10の補数表現*2である。
この$$ \cdot\cdot973 $$$$ \cdot\cdot $$$$ 999973 $$のように上位に$$ 9 $$が無限に続く表記。
その$$ 9 $$は、無理やり引く際に発生した無限の繰下がりの結果。



$$ \phantom-\cdot\cdot $$$$ \iro[gy]{999 0} $$

イ海Δ靴董⊂絨未ら10借りて、下位に1貸す結果、9が量産される
千の位は既に0なので百に1を貸すため、万の位から10を借りる必要がある
百の位が0−1となり、千の位から10を借りる必要がある

$$ \phantom-\cdot\cdot $$$$ \cancel{0} \cancel{0} \cancel{0} \cancel{1} 06 $$

106の上位に0が無限に続いている

$$ - \cdot\cdot $$$$ 000 133 $$

十の位の0−3の時点で繰り下げが発生し、106の1が0になる

$$ \!\overline{\,\phantom-\cdot\cdot\; 999 973\;} $$

検算として、$$ \cdot\cdot973 $$$$ +27 $$を普通に足すと*3、無限の繰り上がりで上位が$$ 0 $$になるのが確認可能。



$$ \phantom-\cdot\cdot $$$$ \iro[gy]{000 08} $$

イ海Δ靴董下位から1を貰い、上位に1を押し出す結果、0が量産される
百の位は既に9なので1を貰うと、10になって千の位に繰り上がる
十の位の8+2の更に繰り上げが発生し、百の位が10になる

$$ \phantom-\cdot\cdot $$$$ \cancel{9} \cancel{9} \cancel{9} \cancel{9} \cancel{7} 3 $$

・・973の上位に9が無限に続いている

$$ + \cdot\cdot $$$$ 000 027 $$

一の位の3+7で繰り上がりが発生し、十の位が8になる

$$ \!\overline{\,\phantom-\cdot\cdot\; 000 000\;} $$

具体例として、既に出てきた$$ \cdot\cdot973 $$$$ +38 $$を普通に足すと以下になる:

$$ \phantom-\cdot\cdot $$$$ \iro[gy]{000 08} $$

$$ \phantom-\cdot\cdot $$$$ \cancel{9} \cancel{9} \cancel{9} \cancel{9} \cancel{7} 3 $$

$$ + \cdot\cdot $$$$ 000 038 $$

$$ \!\overline{\,\phantom-\cdot\cdot\; 000 011\;} $$

絶対値表現に対し、負号に応じて演算アルゴリズムを変える必要が無いのが補数表現の強み。
実際、世の中の計算機は2の補数表現を使って、数の符号で場合分けせずに整数を加減している。
このように、表記を工夫することで、アルゴリズムが簡単になることが多々ある*4

*1 日頃から2進法を弄ってる人は簡単に思いつくので、使ってるかも?
*2 龍谷大学 経済学部 野間圭介/補数: http://www.biz.ryukoku.ac.jp/~noma/edp/complement.htm
*3 普通とは。一応、教科書的な手順。ただし、無限な繰り上がりは発生する。
*4 逆に、ギリシア数字で表記した場合、除算が一気に難しくなるのは試せば分かる。

まとめ EditToHeaderToFooter

筆算の書き方は昔や外国まで目を向けば色んな書き方がある。
教科書に載っているのは一例でしかない。

リロード   新規 編集 凍結 差分 添付 複製 改名   数学 一覧 検索 最新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: 2017.0220 (月) 0322.2400 (37d)