Как работает модуль меньшего дивиденда и большего делителя? - PullRequest
17 голосов
/ 02 сентября 2010
7 % 3 = 1 (remainder 1)

как
3 % 7 (остаток?)

работает?

Ответы [ 9 ]

36 голосов
/ 02 сентября 2010

остаток от 3/7 равен 3. Так как он прошел 0 раз с 3 остатками, то есть 3% 7 = 3

6 голосов
/ 02 сентября 2010

Точно так же. Коэффициент равен 0 (3/7 с дробной частью отбрасывается). Тогда остаток удовлетворяет:

(a / b) * b + (a % b) = a
(3 / 7) * 7 + (3 % 7) = 3
0 * 7 + (3 % 7) = 3
(3 % 7) = 3

Это определено в C99 §6.5.5, Мультипликативные операторы.

5 голосов
/ 02 сентября 2010

7 уходит в 3? ноль раз, когда осталось 3.

фактор равен нулю. Остаток (модуль) составляет 3.

4 голосов
/ 02 сентября 2010
  • 7, деленное на 3, равно 2 с остатком 1

  • 3, деленное на 7, равно 0 с остатком 3

3 голосов
/ 02 сентября 2010

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

1 голос
/ 19 октября 2017

Концептуально, я думаю об этом так.По определению, ваш дивиденд должен быть равен (quotient * divisor) + modulus

Или, решая для модуля: modulus = dividend - (quotient * divisor)

Всякий раз, когда дивиденд меньше делителя, частное всегда равно нулю, что приводит кмодуль просто равен дивиденду.

Для иллюстрации со значениями ОП:

modulus of 3 and 7 = 3 - (0 * 7) = 3

Для иллюстрации с другими значениями:

1 % 3:
1 - (0 * 3) = 1

2 % 3:
2 - (0 * 3) = 2
1 голос
/ 02 сентября 2010

a% q = r означает, что есть топор, поэтому q * x + r = a.

Итак, 7% 3 = 1, потому что 3 * 2 + 1 = 7,

и 3% 7 = 3, потому что 7 * 0 + 3 = 3

1 голос
/ 02 сентября 2010

(7 * 0) + 3 = 3;следовательно, остаток составляет 3.

0 голосов
/ 14 апреля 2018

Чтобы мой мозг понял этот вопрос, я всегда преобразую его в объект реального мира, например, если я преобразовываю ваш вопрос 3% 7 . Я собираюсь представить "3" как 3-дюймовое металлическое отверстие шириной , затем "7" как 7 дюймовый металл винт . Можете ли вы вставить 7-дюймовый металлический винт в 3-дюймовое металлическое отверстие ? Конечно, нет, поэтому ответ должен быть 3-дюймовым металлическим отверстием, даже если скажем, у вас есть винт 1000 или миллион дюймов , это все еще 3, потому что сколько раз Вы можете вставить винт шириной 1000 или миллион дюймов в металлическое отверстие шириной 3 дюйма? Ноль раз, верно?

...