このような簡単な質問をするのは恥ずかしいです。私の任期はさらに2週間は開始されないので、教授に聞くことはできず、サスペンスは私を殺すでしょう。
なぜ2 mod 4 = 2ですか?
Modは、除算の実行後に残りを取得することを意味します。 4は2回ゼロになるため、残りは2になります。
モジュロ は、除算ではなく剰余です。
2 / 4 = 0R2
2 % 4 = 2
Wordの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
モジュロ(mod、%)は剰余演算子です。
2%2 = 0 (2/2 = 1 remainder 0)
1%2 = 1 (1/2 = 0 remainder 1)
4%2 = 0 (4/2 = 2 remainder 0)
5%2 = 1 (5/2 = 2 remainder 1)
バナナと人々のグループを使用すると、はるかに簡単になります。
たとえば、バナナが1つ、6人のグループがある場合、これは次のように表現します: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バナナが残りであるためです。
12 mod 6
または6人で共有される12個のバナナの場合、それぞれに2本のバナナがあり、残りは0です。
ほんの数分前、私もこれについて混乱していました。それから私は一枚の紙の上で長文の分割を行い、それは理にかなっています:
これは、コンピューターがこの問題を処理する限りです。コンピューターはそこで停止し、2を返します。これは、 "%"(mod)が求めているものであるため、理にかなっています。
私たちは小数を入れて進むように訓練されてきたので、最初は直感に反することがあります。
2/4 = 0で、余りは2
誰かが私に連絡し、質問のコメントで私の答えをより詳細に説明するように頼みました。だから、他の人を助けることができる場合に私がその人に答えたのは次のとおりです:
モジュロ演算は、ユークリッドの除算の残りを提供します(実数ではなく整数でのみ機能します)。 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 modulo 4が2である理由です。
モジュロ演算子は、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)
モジュロは、整数除算式の整数として表される剰余です。
したがって、画面の幅が100ピクセルで、位置が20である位置90の画面にピクセルがあり、位置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
modは、割ったときの余りを意味します。したがって、2を4で除算すると0になり、2が残ります。したがって、2 mod 4は2です。
モジュロ方程式の読み方について混乱していると思います。
2/4
のような除算方程式を記述するとき、2を4で除算します。
2 % 4
などのモジュロ方程式が記述されている場合、2 by 4
を除算し(2を4と考えて)、剰余を返します。
MODは剰余演算子です。 2 mod 4が剰余として2を与えるのはそのためです。 4 * 0 = 0、2-0 = 2。より明確にするために、6 mod 4または8 mod 3で同じことを試してください。
これはモジュラー算術と呼ばれます。
a==b(mod m)
then m|(a-b)
a-b=km
a=b+km
So, 2=2+0*4
2を4で割ると、2が残っているか残っている0が得られます。モジュロは、数値を除算した後の余りです。
モジュロx % y
に答えるには、2つの質問をします。
A- y
は、余りなくx
に何回入りますか? 2%4の場合は0です。
B-それからx
に戻すためにいくら追加する必要がありますか? 0から2に戻すには、2-0、つまり2.が必要です。
これらは次のような1つの質問にまとめることができます:x
に戻るには、y
をx
で除算した整数に近い結果にどれだけ追加する必要がありますか?
整数のように、それは整数のみを意味し、興味のある分数ではありません。
モジュロは整数のみを扱うため、小数部の剰余(例:.283849)はモジュロには関係ありません。
にとって:
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
それがあなたのために働くことを願っています:)
これはユークリッドアルゴリズムです。
例えば
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
それについて視覚的に考えるために、あなたの特定の例では、12ではなく4にのみ行く時計の文字盤を想像してください。 2「時間」、あなたは2に着陸し、ちょうど6「時間」それを時計回りに回るのと同様に2に着陸します(2 mod 4 == 2のように6 mod 4 == 2)。
これは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")