83

次の式の観点からモジュラス演算子を理解しています。

7 % 5

これは、5 が 7 に 1 回入り、残りの 2 が返されるため、2 を返しますが、このステートメントを逆にして次のように読むと、混乱が生じます。

5 % 7

これにより、値が 5 になり、少し混乱します。7 の全体は 5 にはならないのに、一部はそうなるのに、なぜ余りがないか、正または負の 2 の余りがないのですか?

7 が 5 にまったく入らないという事実に基づいて 5 の値を計算している場合、余りが 5 ではなく 7 でないのはなぜですか?

モジュラス演算子の理解において、ここで何かが欠けているように感じます。

4

10 に答える 10

160

(この説明は言語に依存するため、正の数のみを対象としています)

意味

係数は、ある数値を別の数値でユークリッド除算した余りです。モジュロ演算%と呼ばれます。

たとえば、等号で9割っても のままです。ここで、と.4219 / 4 = 29 % 4 = 1

ユークリッド除算

あなたの例では: 5 を 7 で割ると 0 になりますが、5 のままです ( 5 % 7 == 5)。

計算

モジュロ演算は、次の式を使用して計算できます。

a % b = a - floor(a / b) * b
  • floor(a / b)aで割り切れる回数を表しますb
  • floor(a / b) * bは、完全に共有された金額です
  • 合計 ( a) から共有されたものを引いたものは、除算の余りに等しい

最後の例に適用すると、次のようになります。

5 % 7 = 5 - floor(5 / 7) * 7 = 5

剰余算術

そうは言っても、あなたの直感は、それが 5 ではなく -2 である可能性があるということでし-2 = 5 (mod 7)7k - 2 = 5

あなたは剰余算術を学んだことはないかもしれませんが、おそらく角度を使用したことがあり、モジュロ 360 であるため、-90° は 270° と同じであることを知っています。では、円を取り、その周囲の長さを 7 とします。すると、どこが 5 であるかが読み取れます。10 で試してみると、3 であるため、3 にあるはず10 % 7です。

于 2013-07-08T11:03:56.423 に答える
23

2 つのステップ ソリューション。

ここでの答えのいくつかは、私が理解するのが複雑です。これの見方を簡単にするために、もう1つ回答を追加してみます。


簡潔な答え:

例 1:

7 % 5 = 2

1 人につき 1 枚のピザを用意する必要があります。

5 人で 7 スライスを分割すると、5全員が 1 つのピザ スライスを取得し、2スライス (残り) になります。7 % 5equalsはより大きい2ためです。7 5


例 2:

5 % 7 = 5

1 人あたり 1 枚のピザを用意する必要があります

よりも小さい5ので、それは与えます。したがって、定義上、アイテム全体を人に分割することはできません。したがって、除算はまったく行われず、開始時の金額と同じ になります。5 7575


プログラムによる回答:

プロセスは、基本的に次の 2 つの質問をすることです。

例 A: (7 % 5)

(問 1) 7 を得るために 5 を掛ける数は?

Two Conditions: Multiplier starts from `0`. Output result should not exceed `7`. 

やってみよう:

乗数はゼロ0なので、0 x 5 = 0

それでも足りないので、乗数に 1 (+1) を追加します。

1それで、1 x 5 = 5

まだ 7 を取得していないので、1 つ (+1) 追加します。

2それで、2 x 5 = 10

を超えまし7た。したがって2、正しい乗数ではありません。1 ステップ ( を使用した場所1) に戻り、結果が であることに注意して5ください。ここでは数5が鍵です。

5(Q.2)を得るには (ステップ 1 で得た数) にいくら足す必要があります7か?

次の 2 つの数字を差し引きます7-5 = 2

したがって、次の答え 7 % 52; です。


例 B: (5 % 7)

1- 5 を得るために 7 を掛けるのに使用する数は?

Two Conditions: Multiplier starts from `0`. Output result and should not exceed `5`. 

やってみよう:

0それで、0 x 7 = 0

まだ 5 を取得していません。より大きな数を試してみましょう。

1それで、1 x 7 = 7

いや、 を超えました。 を使用して結果を得た5前のステップに戻りましょう。00

02-左側の数値の値に到達するには、(ステップ 1 で取得した数値) にいくら追加する必要があり5ますか?

数が5であることは明らかです。5-0 = 5

   5 % 7 = 5

それが役立つことを願っています。

于 2018-09-06T10:15:04.627 に答える
0

残りを見つけるための斬新な方法を以下に示します

ステートメント : 剰余は常に一定

ex : 26 divided by 7 gives R : 5 

これは、約数に近い26を完全に割る数を求め、両者の差を取ることで簡単にわかります。

13 は、26 を完全に割り切る 7 の次の数です。7 の後には 8、9、10、11、12 が続きますが、いずれも 26 を完全に割り切れず、余りが 0 になりません。

したがって、13 は 7 に最も近い数で、割って余りが 0 になります。

ここで差 (13 ~ 7) = 5 を取ります。

注: これを機能させるには、除数を最も単純な形式に減らす必要があります。例: 除数が 14 の場合、被除数を割る最も近い数を見つけるために 7 を選択する必要があります。

于 2013-11-20T16:38:02.297 に答える