なぜ2 mod 4 = 2なのですか?


150

こんな簡単な質問をするのは恥ずかしいです。私の任期はもう2週間始まらないので、教授に尋ねることはできません、そしてサスペンスは私を殺します。

なぜ2 mod 4 = 2なのですか?


45
なぜなら2 = 0 * 4 + 2
p4bl0 2009


1
x / yでは、結果は整数部と小数部で構成されます。小数部に除数を掛けると、余りが得られます。そして、x =整数部分y +剰余(すなわち、分数部分 y)。この場合、整数部分は0であり、残りは2である
mshsayem

76
その質問をする勇気があったことをうれしく思います。
舗装

モジュロは、2つの数値を除算することと同じです。
holex

回答:


151

Modは、除算の実行後に残りを取ることを意味します。4は2回ゼロになるので、残りは2になります。


95

モジュロ剰余なく、部門です。

2 / 4 = 0R2
2 % 4 = 2

符号%は、単語の代わりに、モジュロ演算子によく使用されmodます。

の場合x % 4、次の表が表示されます(1〜10)。

 x x%4
------
 1  1
 2  2
 3  3
 4  0
 5  1
 6  2
 7  3
 8  0
 9  1
10  2


13

あなたがバナナと人々のグループを使うならば、はるかに簡単です。

これはあなたが表現するだろう、あなたは6人の1本のバナナやグループを持っていると言います:1 mod 6/ 1 % 6/ 1 modulo 6

十分な栄養と幸せを得るためには、グループの各人に6バナナが必要です。

したがって、1つのバナナがあり、それを6人と共有する必要があるが、グループメンバーごとに1つのバナナ、つまり6人の場合にのみ共有できる場合、1つのバナナを持ちます(残り、の誰にも共有されません)グループ)、2バナナについても同様です。次に、残りのバナナが2つになります(何も共有されません)。

しかし、6人のバナナを取得したら、6人のグループのメンバーごとに1人のバナナが存在し、6人のバナナ6個すべてを共有したときに残りが0個またはバナナが残っていないため、満足するはずです。

これで、7人のバナナと6人のグループの場合は、になります7 mod 6 = 1。これは、6人にそれぞれ1つのバナナを与え、残りの1つは1つのバナナだからです。

以下のために12 mod 66人で共有バナナまたは12、各々は、二つのバナナを持つことになり、残りは次に0です。



8

これについても、ほんの数分前に混乱しました。それから私は一枚の紙の上で手で割り算をしました、そしてそれは理にかなっています:

  • 4は0に2回入ります。
  • 4の0は0です。
  • あなたは2の下にそのゼロを置き、2を残す減算します。

これは、コンピュータがこの問題を処理する限りです。コンピュータはそこで停止し、2を返します。これは、「%」(mod)が要求しているものだからです。

私たちは小数を入れて続けるように訓練されてきたので、これは最初は直観に反することがあるのです。


7

誰かが私に連絡して、質問のコメントで私の答えを詳しく説明するように頼まれました。それで、他の誰かを助けることができる場合に備えて、私はその人に返信したものです:

剰余演算は、ユークリッドdisivionの残りの部分を提供します(実数ではなく整数でのみ機能します)。A = B * C + D(D <Bの場合)であるAがある場合、ユークリッド分割のAをBで割った商はCで、余りはDです。2を4で割ると、商は0、残りは2です。

Aオブジェクト(カットできないもの)があるとします。そして、同じ量のオブジェクトをB人に配布したいとします。B個を超えるオブジェクトがある限り、それぞれに1を与えて繰り返します。残っているオブジェクトがBより少ない場合は、停止して残りのオブジェクトを保持します。この操作を繰り返した回数をCとしましょう。これが商です。最後に保持するオブジェクトの数(Dと呼びましょう)が残りです。

2つのオブジェクトと4つの人がいる場合。すでに4つ未満のオブジェクトがあります。したがって、各人は0個のオブジェクトを取得し、2個を保持します。

そのため、2モジュロ4は2です。


5

モジュロ演算子は、2つの整数オペランドの除算の剰余として評価されます。以下にいくつかの例を示します。

23 % 10 evaluates to 3 (because 23/10 is 2 with a remainder of 3)
50 % 50 evaluates to 0 (50/50 is 1 with a remainder of 0)
9 % 100 evaluates to 9 (9/100 is 0 with a remainder of 9)

4

modは、分割されたときのリーマを意味します。したがって、2を4で割ると0になり、残りは2になります。したがって、2 mod 4は2です。


4

モジュロは、数学的な除算式の剰余であり、整数で表されます。

たとえば、画面の幅が100ピクセルの位置90にあるピクセルを20加算するとします。これは、位置10に折り返されます。なぜ... 90 + 20 = 110、つまり110%100 = 10であるためです。

それを理解するために、私はモジュロは小数の整数表現であると考えています。さらに、式を逆方向に実行して残りを小数として処理し、除数に追加すると、元の答えが得られます。

例:

    100
(A) ---  =  14 mod 2
     7

    123
(B) ---  =  8 mod 3
     15

     3
(C) ---  =  0 mod 3
     4

リバースエンジニアリング:

                        2      14(7)    2       98    2     100
 (A) 14 mod 2  =  14 + ---  =  ----- + ---  =  --- + ---  = ---
                        7        7      7       7     7      7

                      3      8(15)    3      120    3      123
 (B) 8 mod 3  =  8 + ---  =  ----- + ---  =  --- + ---  =  ---
                      15       15     15      15    15      15

                      3       3
 (B) 0 mod 3  =  0 + ---  =  ---
                      4       4

2

2を4で割ると、2が残っているか残っていると0になります。Moduloは、数を除算した後の余りです。


1

モジュロ方程式がどのように読み取られるかについて混乱していると思います。

2/42を4で割るような除算方程式を書くとき。

2 % 4除算2 by 4(2を4と考える)などの剰余方程式が記述され、残りを返す場合。


1

MODは剰余演算子です。これが、2 mod 4が2を剰余として与える理由です。4 * 0 = 0、次に2-0 = 2。より明確にするために、6 mod 4または8 mod 3でも同じことを実行してみてください。


1

これはユークリッドアルゴリズムです。

例えば

a mod b = k * b + c => a mod b = c、ここでkは整数、cは答え

4 mod 2 = 2 * 2 + 0 => 4 mod 2 = 0

27 mod 5 = 5 * 5 + 2 => 27 mod 5 = 2

だからあなたの答えは

2 mod 4 = 0 * 4 + 2 => 2 mod 4 = 2


1

ために:

2 mod 4

私は少し考えた後で思いついたこの小さな式を使用できます。多分それは私が知らないどこかで定義されているかもしれませんが、私にとってはうまくいき、それは本当に便利です。

A mod B = C ここでCは答えです

K * B - A = |C| ここで、KはBがAに適合する回数です。

2 mod 4 だろう:

0 * 4 - 2 = |C|

C = |-2| => 2

それがあなたのために働くことを願っています:)


1

Mod操作はリマインダーで動作します。

これはモジュラー演算と呼ばれます。

 a==b(mod m) 
 then m|(a-b)
 a-b=km 
 a=b+km
 So, 2=2+0*4

1

モジュロに答えるには x % yに、2つの質問をします。

A- 残りなしで何回y入りxますか?2%4の場合は0です。

B-そこに戻るためにxいくら追加する必要がありますか?0から2に戻すには、2-0、つまり2が必要です。

これらは次のように一つの質問にまとめることができるので:あなたが除算の整数っぽい結果に追加する必要がありますどのくらいのxことでy、時に戻って取得するにはx

整数っぽいというのは、整数だけを意味し、関心のある分数は意味しません。

剰余除算の剰余(例:.283849)は、モジュロでは整数のみを扱うため、モジュロでは重要ではありません。


0

それを視覚的に考えるには、特定の例では12ではなく4になる時計の文字盤を想像してください。時計を4から始めて(ゼロから始めるようなものです)、時計回りに次のように回します。 2 "時間"、2に着陸するのと同じように、時計回りに6回転するように2に着陸します(2 mod 4 == 2と同じように、6 mod 4 == 2)。


6
それは実際にはかなり混乱しています。
ジョーフィリップス

@ do3boy:時計の文字盤のアイデアは、モジュロの事実を正確に記述する非常にシンプルで簡単な方法です。使用可能な位置の数を変更する代わりに、それを説明するために24h形式を使用する方が簡単だったという点を除いて。
2009

0

これはmodr()関数について言及する良い機会かもしれません。部門の全体と残りの部分の両方を返します。

print("\n 17 // 3 =",17//3," # Does the same thing as int(17/3)")
print(" 17 %  3 =",17%3," # Modulo division gives the remainder.")
whole, remain = divmod(17,3)
print(" divmod(17,3) returns ->",divmod(17,3),end="")
print(" because 3 goes into 17,",whole,"times with a remainder of",remain,end=".\n\n")
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.