いきなりですが問題です。中学生になったつもりで,考えてみましょう。
(i) 5を-3で割ったときの商と余りは?
(ii) -5を3で割ったときの商と余りは?
(iii) -5を-3で割ったときの商と余りは?
元ネタは,以下のページのp.88です.
目次より前のp.ivによると,「この本は,筆者が勤務する大学の教養課程で行なっている講義の内容の一部を中高生向けに再構成したものです.」とのことです.ちなみに著者とは面識があります(よく叱咤激励を受けています).中学生になったつもり…で引っかかったのは,「(i)」「(ii)」「(iii)」です.ローマ数字*1によるナンバリングなのですが,個人的にこの表記を知ったのは高校に入ってからで,もっぱら場合分けをするときに使用しました.今回の元ネタでは,場合分けではなく,別々の問題として,答えを考えればよいわけです.
正の整数aを正の整数bで割ったときの商qと余りrは,a=bq+r(0≦r≦b-1)と表せることを,p.88で,また割る数が正の数と負の数の場合をまとめて書くと,a=bq+r(0≦r≦|b|-1)と表せることを,p.91で,それぞれ述べています.ここで|b|はbの絶対値です.
そこで,「r=a-b×整数,ただしrは,0以上,bの絶対値未満」と考えて,rを求めてからqを求めることにすれば,「5を-3で割ったときの商は-1で余りは2」「-5を3で割ったときの商は-2で余り1」「-5を-3で割ったときの商は2で余りは1」を得ます.
と考えてから,本書に戻ると,「r=a-b×整数」の式は見かけません.かわりにp.90では「」「」「」「」と,分数の和にしています.
いずれの式も,左辺の分子が割られる数,左辺および右辺の各項の分母が割る数で,右辺の第1項がその商,右辺の第2項の分子が余りです.
またp.94では,「」だけれど「商1余り2≠商2余り1」,」だけれど「商-2余り1≠商-1余り2」という関係式(?)もあります.
ところで負の数の割り算と,商と余りの話は,セキュリティに関する学部3年生向け授業で取り上げています.
RSA暗号アルゴリズムの鍵計算で,L=(p-1)(q-1)を法とするEの逆数を求めるにあたり,拡張ユークリッドの互除法を適用すると,結果が負の数となることがあるため,数学的にはLで割った余りを求めて0以上L未満にします*2.「正の数÷正の数」と「負の数÷正の数」は,想定しないといけないけれど,RSAでは負の数で割って余りを求める操作は出てこない,と言うこともできます.
合わせてどうぞ:分数の計算規則と,脚注の掛け算の順序問題 - かけ算の順序の昔話
*1:ローマ数字はpp.51-52で取り上げられています.文字はすべて大文字です.
*2:実用上は,拡張ユークリッドの互除法の結果は入力に依存してある範囲に収まるので,負の場合にはLを足すという操作で,0以上L未満になってくれます.