Math Fundamentals18 sections · 814 units
Open in Course

Negative Numbers and Modulo

Language differences

What is 7mod3-7 \bmod 3? Mathematically, it should be 22 (because 7=3×(3)+2-7 = 3 \times (-3) + 2). But different programming languages give different answers.

Python gives 22. C++ and Java give 1-1. This happens because they use different definitions of the remainder operation for negative numbers.

To get a positive result in any language, use: (amodm+m)modm(a \bmod m + m) \bmod m. This formula always gives a value between 00 and m1m - 1.