アプリ版:「スタンプのみでお礼する」機能のリリースについて

剰余計算で余りのことを考えているうちに、基準が統一されていないというか、首尾一貫していないのではないか、と思ってしまうようになりました。
例えば、(ー3)÷3では、商が―1で余りは0となります(というか、そういうことになっています)。しかし、余りとは除数、被除数より小さい数である、という定義で見ると、被除数の―3がすでに除数の3より小さい数なのだから、余りは―3ということにならないか?
絶対値をとり、|ー3|=3から、0は余りとしてよい、となるかもしれませんが、そうすると、負の数を割っているということの意味がどうなるのかな、と思ってしまうのです。
また、0÷3を考えると、これも余りは0となりますが、絶対値をとるという方針であっても、この場合、余りが被除数と同じ数になってしまう。
さらに拡大解釈すれば、絶対値をとり、絶対的な大きさで考えるとすると、複素数ですらも、割り算の際の余りを考えることが可能とならないか?
例えば、|3+4i|=5とできるから、3+4iの割り算は5を除数とする割り算として、その余りを出すことができる(かもしれない)。
そこで考えたのは、以下の定義です。
「a、b、c、dを整数とする。d=a・b+c とできるとき、cを余りとする」
どうでしょうか?

質問者からの補足コメント

  • cを可能な限り0に近づけるという条件を付ける、付け足しておきます。

      補足日時:2022/02/07 15:04
  • cが一意に決まらないことは、自分としても気になっていました。そこで、本文の追加補足でも書きましたが、できるだけ0に近い数にする、という条件を付けたしたらどうか、と考えたのです。

    No.2の回答に寄せられた補足コメントです。 補足日時:2022/02/07 15:20

A 回答 (9件)

>(2)-2 floored Division


>商を無限大の負方向に丸めるやりかた。

>(-5) ÷ 3 = -2 余り 1
>5 ÷ (-3) = -2 余り -1

>特徴: 被除数と余りの符号が同じになります。

誤ってますね。申し訳ない。

特徴: 除数と余りの符号が同じになります。
    • good
    • 0

まだやってるみたいなんで、ちょっとまとめを


余りには大きく分けて2つの流儀が有ります。

いずれも以下の関係が成り立つことを前提にしてます。

被除数と除数と商と余りの関係式
m = n × q + r (m=被除数、n=除数、q=商, r=余り)

(1) r の範囲を予め決めておいて、それに基づいて r, q を決めるもの。

例:ユークリッド除法

数学で使われるやり方で、

0≦r<|q|
となるように、「被除数と除数と商と余りの関係式」から
q, r を決める方法。

(-5) ÷ 3 = -2 余り 1
5 ÷ (-3) = -1 余り 2

余りは常に非負。
商の実数値は同じなのに商の整数値が異なるのが特徴。
計算機の除算としては使われていません。

(2) 商(実数値)を整数値へ丸める方法を決め、商を求めてから
被除数と除数と商と余りの関係式で余りを求める方法

(2)-1 Truncated Division
商をゼロ方向に丸めるやりかた。

(-5) ÷ 3 = -1 余り -2
5 ÷ (-3) = -1 余り 2

特徴: 被除数と余りの符号が同じになります。

(2)-2 floored Division
商を無限大の負方向に丸めるやりかた。

(-5) ÷ 3 = -2 余り 1
5 ÷ (-3) = -2 余り -1

特徴: 被除数と余りの符号が同じになります。
除数が正の時数学の剰余と一致するので便利。

大半のコンピュータ言語は (2)-1か(2)-2

(2)-3 偶数丸め(近接丸め)による方法
商(実数)にもっとも近い整数値に商を丸める方法。
但し 商(実数)が近くの整数と等距離なら偶数を選択

(-5) ÷ 2 = -2 余り -1
5 ÷ (-2) = -2 余り 1
(-7) ÷ 2 = -4 余り 1
7 ÷ (-2) = -4 余り -1

余りの範囲が -|n/2| ≦ q ≦ |n/2| になります。
余りを商の計算誤差と捉えると、それが最小になる
除法と言えます。

Pythonなど一部のコンピュータ言語がライブラリとして
実装してます。

他にも4捨5入、5捨6入版の近接丸めによる方法とか
丸めの定義次第で整数除算と余りの定義はなんぼでも
増やせます。
    • good
    • 0
この回答へのお礼

詳細な情報、ありがとうございます。

お礼日時:2022/02/09 15:20

「絶対的最小剰余」は 除算に近接丸めで商を整数化した


場合の定義が IEEE754 にありますね。
近接丸めに偶数丸めを使ってるので、もうすこし複雑な定義です。
    • good
    • 0
この回答へのお礼

御応答、ありがとうございます。

お礼日時:2022/02/08 14:09

因みに数学でよく使うユークリッド除法は


5 ÷ 2 = 2.5 → 商 2, 余り 1
5 ÷ (-2) = -2.5 商-2 余り1
(-5) ÷ 2 = -2.5 商-3 余り1
(-5) ÷ (-2) = 2.5 商3 余り1

となって、同じ商(実数)の切り捨てに
一貫性が無いからか、人気が無いようです。

C言語では商はゼロ方向へ切り捨て → 余りは被除数と同符号
Python言語では商は負方向へ切り捨て→余りは除数と同符号
    • good
    • 0

>できるだけ0に近い数にする


これは「絶対的最小剰余」とかいうらしい
-|n/2|≦r<|n/2|
又は
-|n/2|<r≦|n/2|
を選ぶ必要有り。rが余り、nが除数
    • good
    • 0

>できるだけ0に近い数にする



これだと

12÷8=1余り4、2余り-4 どっち?

ってなるだろうな(^_^;)
    • good
    • 0

>余りとは除数、被除数より小さい数である



チョット違うような。
一般的には、0≦(余り)<(除数) です。
余りに 負数を認める場合でも |(余り)|<(除数) です。

複素数の場合は、勝手に絶対値を使うと 別の式になるでしょ。
普通は、共役複素数を 分母子に掛けますよね。
    • good
    • 0

それだと、cが決まらないよね。


数学だとユークリッド除去で定義されてる
余りを使うのが一般的かな。
#余りが非負で除数の絶対値未満にするやり方。シンプル

コンピューター言語だと、余りのだし方は言語によって異なるけど。
この回答への補足あり
    • good
    • 0

何をグタグタと。


そもそも以下のrを剰余、と定義されている。

任意の整数mと正の整数nに対し、ある整数qとrがただ一つずつ存在し、
m = nq+r かつ 0 ≦ r < n
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!