トップQs
タイムライン
チャット
視点
剰余
ウィキペディアから
Remove ads
数学において剰余(じょうよ、英: remainder)とは、ある種の計算を実行した後の「あまり」の量を指す。算術においては、剰余とはある整数を別の整数で割って(除法、割り算)商を得る際に「あまる」整数のことを指す(整数除法)。多項代数学においては、剰余とはある多項式を別の多項式で割った際の「あまり」を指す。剰余演算は被除数(dividend)と除数(divisor)が与えられた際にそのような乗除を得るような演算である。
他に、ある数から別の数を引いた(減法、引き算)際に残された数のことも剰余と呼ばれるが、こちらは「差」という言い方がより正確である。この用法はいくつかの初歩的な教科書で見られる。会話では「2ドルを私に返して、残りはそちらで持っておいてくれ」といったようにしばしば「残り」(rest)という語に置き換えられる[1]。しかしながら、「剰余」という用語はこの用法であっても、函数を級数展開する際に「誤差」が剰余項として使われる。
Remove ads
整数除法
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 は正に限る)などの条件を付け加えた場合に得られる。
Remove ads
例
43を5で割る場合、
- 43 = 8 × 5 + 3
となり、3が最小正剰余となる。また
- 43 = 9 × 5 − 2
となるから、−2が最小絶対剰余となる。
これらの定義は d が負の場合も有効である。例えば43を−5で割ると
- 43 = (−8) × (−5) + 3
より3が最小正剰余となり、一方
- 43 = (−9) × (−5) + (−2)
より−2が最小絶対剰余となる。
42を5で割ると
- 42 = 8 × 5 + 2
となり、2 < 5/2 であるから、2は最小正剰余かつ最小絶対剰余となる。
これらの例において、(負の)最小絶対剰余は最小正剰余から5、すなわち d を引くことで得られる。このことは一般に成り立つ。d で割った際、両方の剰余は正でそれゆえ等しくなるか、あるいは正負が真逆になる。正剰余を r1 とし、負のものを r2 とすると
- r1 = r2 + d
となる。
Remove ads
浮動小数点数
a および d が浮動小数点数で、かつ d がゼロでない時、a は d によって剰余なしで割り切れ、その商は別の浮動小数点数となる。しかしながら、商を整数値に制限するとき、剰余の概念が必要となる。a = qd + r(ただし 0 ≤ r < |d|)を満たすような唯一つの整数商 q および浮動小数点数剰余 r が存在することを示せる。
上記のような、剰余の概念を浮動小数点数へ拡張することは数学の理論上重要ではない。しかしながら、多くのプログラミング言語はこの定義を実装している(剰余演算を参照)。
プログラミング言語
→詳細は「剰余演算」を参照
定義そのものは困難ではないが、剰余を計算する際に負の数が関わることによる実装の問題が存在する。プログラミング言語ごとに異なる慣習が採用されている。以下に例を示す。
- Pascal は mod 演算の結果が正になるよう選び、d が負や0になるのを許容していない(それゆえ a = (a div d ) × d + a mod d は必ずしも成り立たない)[4]。
- C99 は剰余が被除数 a と同じ符号になるよう選ぶ[5]。(C99より前では、C言語は他の選択肢を許容していた)
- Perl と Python(新しい版[どれ?]のみ)は剰余が除数 d と同じ符号になるよう選ぶ[6]。
- Schemeは2つの関数
remainder
とmodulo
を提供している。AdaとPL/Iはmod
とrem
を、Fortranはmod
とmodulo
を持っている。それぞれ、前者が被除数に、後者が除数に符号を合わせる。Common LispとHaskellもmod
とrem
を持っているが、mod
は除数の符号を使用し、rem
は被除数の符号を使用する。[要出典]
Remove ads
多項式の除法
多項式のユークリッド除法は整数のユークリッド除法とよく似ており、多項式剰余が導かれる。その存在は次の定理に基づく。ある体(特に実数あるいは複素数)上で定義された一変数多項式 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を因数に持つ(因数定理)。
Remove ads
関連項目
出典
参考文献
関連図書
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads