Understanding The Modulus Operator %
(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 dividea
byb
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 its 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.
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.
Short Answer:
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
.
Programmatic Answer:
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 is5
. 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.