Math Fundamentals18 sections · 814 units
Open in Course

Negative Numbers and Modulo

Language differences

What is −7 mod 3-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: (a mod m+m) mod m(a \bmod m + m) \bmod m. This formula always gives a value between 00 and m−1m - 1.