数学において剰余(じょうよ、英: remainder)とは、ある種の計算を実行した後の「あまり」の量を指す。算術においては、剰余とはある整数を別の整数で割って(除法、割り算)商を得る際に「あまる」整数のことを指す(整数除法)。多項代数学においては、剰余とはある多項式を別の多項式で割った際の「あまり」を指す。剰余演算は被除数(dividend)と除数(divisor)が与えられた際にそのような乗除を得るような演算である。

他に、ある数から別の数を引いた(減法、引き算)際に残された数のことも剰余と呼ばれるが、こちらは「差」という言い方がより正確である。この用法はいくつかの初歩的な教科書で見られる。会話では「2ドルを私に返して、残りはそちらで持っておいてくれ」といったようにしばしば「残り」(rest)という語に置き換えられる[1]。しかしながら、「剰余」という用語はこの用法であっても、函数を級数展開(英語版)する際に「誤差」が剰余項として使われる。

整数除法

a を整数、d を0でない整数とすると、式 a = qd + r(0 ≤ r < |d|)を満たすただ一組の整数 q および r が存在する。ここで q は「商」、r は「剰余」とそれぞれ呼ばれる。

(この結果の証明は en:Euclidean division を参照。どのように剰余を計算するかのアルゴリズムについては除算 (デジタル)を参照。)

上で定義されたような剰余は「最小正剰余」あるいは単に「剰余」と呼ばれる[2]。整数 a は d の倍数か、(q を正として)q⋅d と (q + 1)d の間にある数のどちらかである。

いくつかの場合、a ができる限り d の整数倍になるようにすると便利である。このとき、いくつかの整数 k に対して

a = k⋅d + s(ただし |s| ≤ |d/2|)

となる。

この場合、s は「最小絶対剰余」と呼ばれる[3]。商および剰余と同様に、d = 2n かつ s = ± n の場合を除き、k と s は一意に定まる。例外の場合、

a = k⋅d + n = (k + 1)d − n

となる。 固有の剰余はいくつかの条件(例えば s は正に限る)などの条件を付け加えた場合に得られる。

例

43を5で割る場合、

43 = 8 × 5 + 3

となり、3が最小正剰余となる。また

43 = 9 × 5 − 2

となるから、−2が最小絶対剰余となる。

これらの定義は d が負の場合も有効である。例えば43を−5で割ると

43 = (−8) × (−5) + 3

より3が最小正剰余となり、一方

より−2が最小絶対剰余となる。

42を5で割ると

42 = 8 × 5 + 2

となり、2 < 5/2 であるから、2は最小正剰余かつ最小絶対剰余となる。

これらの例において、(負の)最小絶対剰余は最小正剰余から5、すなわち d を引くことで得られる。このことは一般に成り立つ。d で割った際、両方の剰余は正でそれゆえ等しくなるか、あるいは正負が真逆になる。正剰余を r1 とし、負のものを r2 とすると

r1 = r2 + d

となる。

浮動小数点数

a および d が浮動小数点数で、かつ d がゼロでない時、a は d によって剰余なしで割り切れ、その商は別の浮動小数点数となる。しかしながら、商を整数値に制限するとき、剰余の概念が必要となる。a = qd + r(ただし 0 ≤ r < |d|)を満たすような唯一つの整数商 q および浮動小数点数剰余 r が存在することを示せる。

上記のような、剰余の概念を浮動小数点数へ拡張することは数学の理論上重要ではない。しかしながら、多くのプログラミング言語はこの定義を実装している(剰余演算を参照)。

プログラミング言語

定義そのものは困難ではないが、剰余を計算する際に負の数が関わることによる実装の問題が存在する。プログラミング言語ごとに異なる慣習が採用されている。以下に例を示す。

多項式の除法

多項式のユークリッド除法は整数のユークリッド除法とよく似ており、多項式剰余が導かれる。その存在は次の定理に基づく。ある体(特に実数あるいは複素数)上で定義された一変数多項式 a(x) および b(x)(b(x) は非零多項式)が与えられたとき、

であるような式

を満たす2つの多項式 q(x)(商)および r(x)(剰余)が存在する[7]。ただし「deg(...)」は多項式の次数を表す(値が常に0となるような定数多項式の次数は負と定義できることから、この次数条件は剰余に関して常に成り立つ)。さらに、それぞれの関係から q(x) および r(x) は一意に定まる。

ユークリッドの整数除法との違いとして、次数条件が剰余 r の境界(非負かつ除数より小さい、このことによって r の一意性が保たれる)に置き換わることがあげられる。整数除法と多項式の除法の類似性から、ユークリッド除法が成立するもっとも一般的な代数学的条件の追求が促されている。このような定理が存在する環をユークリッド整域と呼ぶが、この一般性では商および剰余の一意性は保証されていない[8]。

多項式の除法から剰余の定理(多項式 f(x) を x − k で割るとき、その剰余は定数 r = f(k) となる)と呼ばれる結果が導かれる[9][10]。特に、r = f(k) = 0ならば、f(x)はx − kを因数に持つ(因数定理)。

関連項目

出典

  1. ↑ Smith 1958, p. 97
  2. ↑ Ore 1988, p. 30. ただし剰余が0の(すなわち、正の数でない)場合でも「正剰余」と呼ばれる。
  3. ↑ Ore 1988, p. 32
  4. ↑ Pascal ISO 7185:1990 6.7.2.2
  5. ↑ “C99 specification (ISO/IEC 9899:TC2)” (2005年5月6日). 16 August 2018閲覧。
  6. ↑ “Built-in Functions — Python 3.10.7 documentation” (2022年9月9日). 10 September 2022閲覧。
  7. ↑ Larson & Hostetler 2007, p. 154
  8. ↑ Rotman 2006, p. 267
  9. ↑ Larson & Hostetler 2007, p. 157
  10. ↑ Weisstein, Eric W.. “Polynomial Remainder Theorem” (英語). mathworld.wolfram.com. 2020年8月27日閲覧。

参考文献

関連図書

⌬ Phoenix Mesh CID: 未登録 IPFS未登録 📡 0ピア N=1 CRITICAL PQS B60