# Understanding The Modulus Operator %

73

I understand the Modulus operator in terms of the following expression:

``````7 % 5
``````

This would return 2 due to the fact that 5 goes into 7 once and then gives the 2 that is left over, however my confusion comes when you reverse this statement to read:

``````5 % 7
``````

This gives me the value of 5 which confuses me slightly. Although the whole of 7 doesn't go into 5, part of it does so why is there either no remainder or a remainder of positive or negative 2?

If it is calculating the value of 5 based on the fact that 7 doesn't go into 5 at all why is the remainder then not 7 instead of 5?

I feel like there is something I'm missing here in my understanding of the modulus operator.

This question is tagged with `modulus`

141

(This explanation is only for positive numbers since it depends on the language otherwise)

Definition

The Modulus is the remainder of the euclidean division of one number by another. `%` is called the modulo operation.

For instance, `9` divided by `4` equals `2` but it remains `1`. Here, `9 / 4 = 2` and `9 % 4 = 1`.

In your example: 5 divided by 7 gives 0 but it remains 5 (`5 % 7 == 5`).

Calculation

The modulo operation can be calculated using this equation:

``````a % b = a - floor(a / b) * b
``````
• `floor(a / b)` represents the number of times you can divide `a` by `b`
• `floor(a / b) * b` is the amount that was successfully shared entirely
• The total (`a`) minus what was shared equals the remainder of the division

Applied to the last example, this gives:

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

Modular Arithmetic

That said, your intuition was that it could be -2 and not 5. Actually, in modular arithmetic, `-2 = 5 (mod 7)` because it exists k in Z such that `7k - 2 = 5`.

You may not have learned modular arithmetic, but you have probably used angles and know that -90° is the same as 270° because it is modulo 360. It's similar, it wraps! So take a circle, and say that it's perimeter is 7. Then you read where is 5. And if you try with 10, it should be at 3 because `10 % 7` is 3.

18

## Two Steps Solution.

Some of the answers here are complicated for me to understand. I will try to add one more answer in an attempt to simplify the way how to look at this.

Example 1:

`7 % 5 = 2`

Each person should get one pizza slice.

Divide 7 slices on 5 people and every one of the `5` people will get one pizza slice and we will end up with `2` slices (remaining). `7 % 5` equals `2` is because `7` is larger than `5`.

Example 2:

`5 % 7 = 5`

Each person should get one pizza slice

It gives `5` because `5` is less than `7`. So by definition, you cannot divide whole `5`items on `7` people. So the division doesn't take place at all and you end up with the same amount you started with which is `5`.

The process is basically to ask two questions:

Example A: (7 % 5)

(Q.1) What number to multiply 5 in order to get 7?

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

Let's try:

Multiplier is zero `0` so, `0 x 5 = 0`

Still, we are short so we add one (+1) to multiplier.

`1` so, `1 x 5 = 5`

We did not get 7 yet, so we add one (+1).

`2` so, `2 x 5 = 10`

Now we exceeded `7`. So `2` is not the correct multiplier. Let's go back one step (where we used `1`) and hold in mind the result which is`5`. Number `5` is the key here.

(Q.2) How much do we need to add to the `5` (the number we just got from step 1) to get `7`?

We deduct the two numbers: `7-5 = 2`.

So the answer for: `7 % 5` is `2`;

Example B: (5 % 7)

1- What number we use to multiply 7 in order to get 5?

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

Let's try:

`0` so, `0 x 7 = 0`

We did not get 5 yet, let's try a higher number.

`1` so, `1 x 7 = 7`

Oh no, we exceeded `5`, let's get back to the previous step where we used `0` and got the result `0`.

2- How much we need to add to `0` (the number we just got from step 1) in order to reach the value of the number on the left `5`?

It's clear that the number is 5. `5-0 = 5`

``````   5 % 7 = 5
``````

Hope that helps.