I was previously under the (naive) assumption that the modulus operator returned the remainder of division. I was apparently wrong, as -2 % 5 returns 3. I would have thought that 5 divides -2 zero times with -2 as the remainder.
Now I understand the mechanics of how this operation is performed, but my question is why? Could someone give me a link to something that explains why modulus and remainder are not synonymous, or an example of a situation where it would be useful?
The result is entirely correct. Modular arithmetic defines the following (I’ll use “congruent” since I can’t type the equal sign with three lines)
a congruent b mod c iff a-b is a multiple of c, i.e. x * c = (a-b) for some integer x.
E.g.
The same can be extended to negative integers:
As you can see, a lot of integers are congruent 3 mod 5:
…, -12, -7, -2, 3, 8, 13, …
In mathematics, the set of these numbers is called the equivalence class induced by the equivalence relation “congruence”. Our understanding of the remainder and the definition of the “mod” function are based on this equivalence class. The “remainder” or the result of a mod computation is a representative element of the equivalence class. By declaration we have chosen the smallest non-negative element (so -2 is not a valid candidate).
So when you read -2 mod 5 = x this translates to “Find the smallest non-negative x so that there exists an integer y with y * 5 = -2 – x”, in concordance with the definition of congruence. The solution is y=1 and x = 3 as you can see by simply trying out other values for y.