Подтвердить что ты не робот

Понимание оператора модуля%

Я понимаю оператор модуля в терминах следующего выражения:

7 % 5

Это вернет 2 из-за того, что 5 переходит в 7 один раз, а затем дает оставшееся 2, однако мое замешательство приходит, когда вы отменяете это утверждение следующим образом:

5 % 7

Это дает мне значение 5, которое меня смущает. Хотя все 7 не входят в 5, часть его делает так, почему нет либо остатка, либо остатка положительного или отрицательного 2?

Если он вычисляет значение 5 на основании того, что 7 вообще не входит в 5, почему остальная часть тогда не 7 вместо 5?

Мне кажется, что в моем понимании оператора модуля есть что-то, чего я не вижу.

4b9b3361

Ответ 1

(Это объяснение только для положительных чисел, так как в противном случае оно зависит от языка)

Определение

Модуль является остатком евклидова деления одного числа на другое. % называется операцией по модулю.

Например, 9 деленное на 4 равно 2 но остается 1. Здесь 9/4 = 2 и 9 % 4 = 1.

Euclidean Division

В вашем примере: 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

Модульная арифметика

Тем не менее, ваша интуиция заключалась в том, что это может быть -2, а не 5. На самом деле, в модульной арифметике, -2 = 5 (mod 7) потому что существует k в Z, такое что 7k - 2 = 5.

Возможно, вы не изучили модульную арифметику, но вы, вероятно, использовали углы и знаете, что -90 ° - это то же самое, что 270 °, потому что это по модулю 360. Это похоже, оно оборачивается! Итак, возьмите кружок и скажите, что его периметр равен 7. Затем вы читаете, где находится 5. И если вы попробуете с 10, это должно быть 3, потому что 10 % 7 - это 3.

Ответ 2

Как указывали другие, модуль основывается на системе остатков.

Я думаю, что более простой способ думать о модуле - это то, что остается после того, как дивиденд (число, которое нужно разделить) было полностью разделено делителем. Так что, если мы думаем о 5% 7, когда вы разделите 5 на 7, 7 могут перейти в 5 только 0 раз, а когда вы вычтите 0 (7 * 0) из 5 (точно так же, как мы учились в начальной школе), то остаток будет 5 (мода). См. Иллюстрацию ниже.

   0
  ______
7) 5    
__-0____
   5

С той же логикой -5 mod 7 будет -5 (только 0 7s могут идти в -5 и -5-0 * 7 = -5). С этим же токеном -5 mod -7 также будет -5. Еще несколько интересных случаев:

5 mod (-3) = 2, то есть 5 - (-3 * -1)

(- 5) mod (-3) = -2, т.е. -5 - (-3 * 1) = -5 + 3

Ответ 3

Некоторые ответы здесь сложны для понимания. Я попытаюсь добавить еще один ответ, чтобы упростить способ взглянуть на это:

Процесс в основном состоит в том, чтобы задать два вопроса:

Например, 7% 5

(1) Какое число умножить на 5, чтобы получить 7? (Начиная с 0)

Давай попробуем:

0 так, 0 x 5 = 0

Тем не менее, у нас мало, поэтому мы добавляем один (+1).

1 так, 1 x 5 = 5

Мы еще не получили 7, поэтому мы добавляем один (+1).

2 т, 2 x 5 = 10

Сейчас мы превысили 7. Так что 2 не правильно, давайте вернемся к значению на первом этапе (где мы использовали 1), и результат был 5.

(2) Сколько нам нужно добавить к 5, чтобы получить 7?

Понятно, что число 2. 7-5 = 2.

7 % 5 = 2;

Например, 5% 7

1- Какое число мы используем, чтобы умножить 7, чтобы получить 5?

Давай попробуем:

0 так, 0 x 7 = 0

Мы еще не получили 5, давайте попробуем большее число.

1 так, 1 x 7 = 7

О нет, мы превысили 5, давайте вернемся к предыдущему шагу, где мы использовали 0 и получили результат 0.

2- Сколько нам нужно добавить к 0 (число, которое мы только что получили на шаге 1), чтобы достичь значения числа слева 5?

Понятно, что число 5. 5-0 = 5

   5 % 7 = 5

Надеюсь, это поможет.

Ответ 4

модуль - система остатков.

Итак, 7% 5 = 2.

5% 7 = 5

3% 7 = 3

2% 7 = 2

1% 7 = 1

При использовании внутри функции для определения индекса массива. Это безопасное программирование? Это другой вопрос. Я полагаю.

Ответ 5

Шаг 1: 5/7 = 0,71

Шаг 2: Возьмите левую часть десятичной дроби, поэтому мы берем 0 из 0,71 и умножаем на 7 0 * 7 = 0;

Шаг №: 5-0 = 5; Следовательно, 5% 7 = 5

Ответ 6

Это как раз об остатках. Позвольте мне показать вам, как

10 % 5=0
9 % 5=4 (because the remainder of 9 when divided by 5 is 4)
8 % 5=3
7 % 5=2
6 % 5=1

5 % 5=0 (because it is fully divisible by 5)

Теперь мы должны помнить одну вещь, мод означает остаток так

4 % 5=4

а почему 4? потому что 5 X 0 = 0, поэтому 0 является ближайшим кратным, который меньше 4, следовательно, 4-0 = 4

Ответ 7

Новый способ узнать остальную часть приведен ниже

Заявление: остаток всегда постоянный

ex : 26 divided by 7 gives R : 5 

это можно легко обнаружить, найдя число, полностью делящее 26, которое ближе к делителя и принимая различие между

13 is the next number after 7 that completely divides 26 because after 7 comes 8, 9 ,

10, 11, 12 where none of them divides 26 completely and give remainder 0.
So 13 is the closest number to 7 which divides to give Remainder 0.
now take the difference (13 ~ 7) = 5 which is the Remainder .

note : for this to work divisor should be reduced to its simplest form ex: if 14 
is the divisor ..7 has to be chosen to find the closest number dividing the dividend.

Ответ 8

Оператор модуля дает вам результат в системе с уменьшенными остатками. Например, для mod 5 подсчитываются 5 целых чисел: 0,1,2,3,4. Действительно, 19 = 12 = 5 = -2 = -9 (mod 7). Основное различие заключается в том, что ответ дается языками программирования с помощью "системы сокращенных вычетов".

Ответ 9

Давайте сформулируем это так:
на самом деле оператор модуля выполняет то же самое деление, но ему нет дела до ответа, он заботится о напоминании, например, если вы делите 7 на 5,
Итак, позвольте мне привести простой пример:
думаю, 5 представляет собой блок, то, например, мы будем иметь 3 блоков в 15 (с ничего не осталось), но когда loginc приходит к этому своего рода чисел {1,3,5,7,9,11,...}, вот где выходит модуль, так что возьмите ту логику, которую я говорил ранее, и примените ее для 7, так что ответ будет таким: у нас есть 1 блок из 5 в 7 => с 2 напоминаниями в нашей руке! это модуль !!!
но вы спрашивали о 5% 7, верно?
так что возьмите логику, которую я сказал, сколько 7 блоков у нас в 5???? 0
поэтому модуль возвращает 0...
это...