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

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

7 % 5 

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

 5 % 7 

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

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

Я чувствую, что в моем понимании оператора модуля мне что-то не хватает.

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

Определение

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

Например, 9 деленная на 4 равна 2 но остается 1 . Здесь 9 / 4 = 2 и 9 % 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 

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

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

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

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

Я думаю, что более простой способ думать о модуле – это то, что остается после того, как дивиденд (число, которое нужно разделить) было полностью разделено делителем. Так что, если мы думаем о 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

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

Таким образом, 7% 5 = 2.

5% 7 = 5

3% 7 = 3

2% 7 = 2

1% 7 = 1

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

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

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

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

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

давайте поместим его так:
на самом деле оператор Modulus выполняет одно и то же разделение, но на него не волнует ответ, он ОБРАТИТСЯ о напоминании, например, если вы разделите 7 на 5,
поэтому, позвольте мне привести вас через простой пример:
думаю, что 5 – это блок, тогда, например, у нас будет 3 блока в 15 ( WITH Nothing Left ), но когда этот loginc приходит к этим типам чисел {1,3,5,7,9,11, …} вот где модуль выходит, так что возьмите ту логику, которую я сказал раньше, и примените ее для 7, так что ответ будет состоять в том, что у нас есть 1 блок из 5 в 7 => с 2 напоминает в наших armх! это модуль !!!
но вы спрашивали о 5% 7, правильно?
так что возьмите логику, которую я сказал, сколько 7 блоков у нас есть в 5 ???? 0
поэтому модуль возвращает 0 …
это оно …

Речь идет о остатках. Позвольте мне показать вам, как

 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

  • Как проверить, есть ли у меня модуль Perl перед его использованием?
  • Android Studio: модуль не будет отображаться в «Редактирование конфигурации»
  • Может ли служба / модуль по умолчанию в приложении Google App Engine быть дочерним элементом нестандартного по структуре папок?
  • Удалить , равное удалению?
  • Использовать requirejs и jquery, не сбивая глобальный jquery?
  • Как использовать модуль для float / double?
  • ImportError на python 3, отлично работал на python 2.7
  • TypScript ReferenceError: экспорт не определен
  • Как я могу использовать новый модуль Perl без разрешения на установку?
  • Как расширить модуль python? Добавление новых функций в пакет `python-twitter`
  • Как работает оператор модуля?
  • Давайте будем гением компьютера.