web-dev-qa-db-ja.com

最初の数値が小さい場合、モジュロ演算はどのように機能しますか?

pythonのモジュロ演算をいじっていますが、残りが何であるかを吐き返すことを理解しています。

しかし、最初の数値が2番目の数値より小さい場合はどうでしょうか?

例えば

2%5の答えは2です。

それはどのように機能しますか?

2/5 = .4

39
Pete

これは役立ちますか

22  % 5 = 2 
17  % 5 = 2 
12  % 5 = 2 
7   % 5 = 2 
2   % 5 = 2

たぶんこれ

22 / 5 = 4 + 2/5
17 / 5 = 3 + 2/5
12 / 5 = 2 + 2/5
7  / 5 = 1 + 2/5
2  / 5 = 0 + 2/5
45
jrhicks

5は2回ゼロになります。

5 * 0 = 0

2-0 = 2。

答えは2です

28
MedicineMan

2を5で割った値(整数の除算)は0で、余りは2です。

17
qpingu

2 = 0 x 5 + 2

13
Pascal Thivent

たとえば、2%5の答えは2です。それはどのように機能しますか? 2/5 = .4!

モジュロは本質的に整数の結果を生成しますが、除算は整数または浮動小数点演算になります。 2/5が0.4であるという観察は、浮動小数点の観点から考えていることを示しています。その場合、.4自体is剰余は、異なる表現で表されます。 「0.4」の整数部分は「0」で、残りの部分は「.4」です。整数除算演算の残りの部分は、浮動小数点演算の小数部分(または口語的には「10進数」)とまったく同じものであり、表現方法が異なります。

例の小数部である0.4は、0.4または2/5(2/5)と表現できます。どちらにしても同じことです。 2/5と書かれている場合、小数部の分母(除数)は元の問題の分母(除数)と同じですが、小数部の分子(被除数)は整数除算の「剰余」。あなたがそれを見ると、商のfractional partと、remainderは同じことを表します(除数除数で均等に除算できない部分)。

10
phonetagger

最初の数値が小さい場合、モジュロの結果を理解するのは本当に簡単です。結果は常に最初の(より小さい)数値と等しくなります

3 % 5 = 3
5 % 10 = 5
78 % 112 = 78

自分で試してみてください。

6
Doug Steinberg

2/5 = 0と考えて、残りの2を5にしてください。

5
akf

最初の数字が小さい場合、答えはその最初の数字です。

2番目の数値は大きいため、最初の数値に0回「入り」、残りはこの最初の数値全体になります。

編集:このスレッドを再訪、私はこの演算子が何のためだったのか覚えていなければなりませんでした。ここでこの他のスレッドを参照しました:

モジュラス演算子を使用するタイミングを認識する

3
Darryl Calder

残りの分子は、分子が分母よりも大きいか小さいかに関わらず、モジュロ答え何があってもです。

12 % 5 = 2 , because 12 / 5 = 2 and **2**/5

9 % 2 = 1 , because 9 / 2 = 4 and **1**/2

これはもっと理にかなっているかもしれません。

5 % 89 = 5 , because 5 / 89 = 0 and **5**/89

5 % 365 = 5 , because 5 / 365 = 0 and **5**/365

5 % 6 = 5 , because 5 / 6 = 0 and **5**/6
2
Emerson

別の注意点は、最初の数(a)が負の数である場合、答えは常に2番目の数と最初の数(n-a)の差であるということです。

例:a%n

  1. -5%7 = 2 ---> 7-5 = 2
  2. 4%-9 = -5 ---> 9-4 = -5(大きい数字の符号に従います)

両方の数値が負の場合、答えは常に負の数値になり、小さい方の数値に等しくなります。

  1. -5%-7 = -5
  2. -4%-9 = -4
2
aldennis

a%b = a if a << b

1
user180100
a%b = a/b=c,
      c*b=d,
      a-d=modulo;

これは、pythonが2つの数値をmodしている間に行うことです。小さな数値と大きな数値の間のモジュロは、常に小さな数値になります。

1
Josh

5に近づくために2を掛ける数はありません。

言い換えると、0という式を満たすには、x5*x + r = 2でなければなりません。

1
dud3

MODは10進数では機能しません... MOD(A、B)uはA

1
abhishek

モジュラー演算を理解するには、カーンアカデミーに行って、それについての投稿を読むことをお勧めします。また、同じページにインタラクティブな練習問題があります。リンクは次のとおりです。 https://www.khanacademy.org/computing/computer-science/cryptography/modarithmetic/a/what-is-modular-arithmetic

要するに:

次の方程式を使用します。

A = BQ + R

[〜#〜] a [〜#〜]dividend

[〜#〜] b [〜#〜]除数

[〜#〜] q [〜#〜]quotient

[〜#〜] r [〜#〜]は、剰余 、およびモジュロの結果です。

Q =(A/B)

Qは常に最も近い最小の整数になります。 Q = 0.2の場合、Q = 0.0になります。 Q = -1.2の場合、Q = -2.0。


ご質問の場合:

Q =(2/5)= 0.4、したがってQ = 0.

それを「A = BQ + R」に差し込みます。

2 = 5 * 0 + R

したがって、R = 2。


お役に立てれば。先ほど言ったように、カーンアカデミーについて詳しく読むことができます。リンクは次のとおりです。 https://www.khanacademy.org/computing/computer-science/cryptography/modarithmetic/a/what-is-modular-arithmetic

0
H. Almidan