Excel VBA 数学教室ではアフィリエイトプログラムを利用して商品を紹介しています。

除算アルゴリズム(整商と剰余、絶対最小剰余)

除算アルゴリズム

たとえば 173 で割り算すると
17÷3=5  2
となります。しかし、このような形は一般的な問題を考えるときに扱いにくいので、数論ではこれを
17=3×5+2
という形で記述します。余りを正数に限定した場合は「173 で割る」という記述方法はこれ以外にありません。今度は 173 で割ってみます。
17=(3)×(5)+2
これも余りを正数のみと決めている場合は他の表し方は存在しません。173 で割れば「商は 5、余りは 2」と決まります。何を当たり前のことを言っているのかと思われるかもしれませんが、数学ではこういうことも一応証明しておかなくてはならないのです。以上の事実を一般化すると次のような定理が成り立ちます。

【定理A1】a を整数、b0 ではない整数とするとき、
a=bq+r,0r≤∣bを満たす整数 q,r が唯一存在する。

【証明】まず b>0 である場合を考えます。b の倍数を小さいほうから順に並べていくと
,3b,2b,b,0,b,2b,3b,
となるので、
qba<(q+1)b
を満たす整数 q が唯一つ存在します。すなわち
0abq<b
が成り立ちます。ここで r=abq とおくと
a=bq+r(0r<b)
となります。次に b<0 の場合を考えます。b の倍数を小さいほうから順に並べていくと
,3b,2b,b,0,b,2b,3b,
となるので、
qba<(q1)b
を満たす整数 q が唯一つ存在します。すなわち
0abq<b
であり、r=abq とおくと
a=bq+r(0r<b)
となります。b=∣b なので、
a=bq+r(0r<∣b)
となって定理A1 が証明されました。
 

絶対最小剰余

以上の議論は 0r<∣b、すなわち余りを 0 または正数に限定していましたが、場合によっては「負の余り」を考えたほうが都合の良い場合もあります。たとえば 17/div3
17=3×61
と書けば、余りの絶対値が小さくなるので、ユークリッドの互除法などの計算では効率が良くなります。このような余りを絶対値最小剰余とよび、定理 A1 の r の条件は
r∣≤b2
と書き直されます。この条件を満たすために、具体的な計算においては、商 qa/b に近いほうをとるように注意します。17/div3 の場合、17/3=5.666/cdots なので、商は 5 ではなく 6 を選択して
17=3×61
と表すことになります。

除算に関連する記号と定義

数論における除算に関する定義や記号をまとめておきます。

a=bq+r において r=0、すなわち a=bq と表せるときに「ab で割り切れる」といい、b|a という記号で表します。このとき ab倍数(multiple)ba約数(divisor)とよびます。また b,qa の因数(factor)とよびます。

a=bq+r において r0 のとき、「ab で割り切れない」といい、b/a という記号で表します。r のことを a剰余(remainder)とよびます。

【次の記事】整正数Nのk進展開
【関連記事】VBAで剰余を計算する

エクセルや数学に関するコメントをお寄せください