Understanding The Modulus Operator %
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.
Solution 1:
(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.
Solution 2:
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.