Skip to content
Related Articles

Related Articles

How to perform modulo with negative values in Python?

View Discussion
Improve Article
Save Article
  • Difficulty Level : Basic
  • Last Updated : 05 Aug, 2021
View Discussion
Improve Article
Save Article

Taking modulo of a negative number is a bit more complex mathematics which is done behind the program of Python. If we don’t understand the mathematics behind the modulo of negative number than it will become a huge blender.
 

Mathematics behind the negative modulo :

Let’s Consider an example, where we want to find the -5mod4 i.e. -5%4. You all must be wondering that the answer will be according to the below rule – 

-5/4 = 1.25 
and
math.floor(-1.25) = -2

But this is not the answer we get, when we’ll run the above code we’ll get the answer as 3. This is because Python’s modulo operator (%) always return a number having the same sign as the denominator. What happens behind the scene is that Python applies the distribute law of Modulo operator which is – 

(a+b)mod n = [(a mod n)+(b mod n)]mod n

To apply this math Python break the given statement as – 

-5%4 = (-2*4 + 3) % 4 = 3

This was done so that the (-2*4)%4 will give the answer as 0 (as we are always getting a multiple of divisor as our first number) and the overall result will be 3. Let’s see more examples for better understanding.

Examples:

-3 % 7 = ( -1*7 + 4 ) % 7 = 4 
-5 % 2 = (-3*2 + 1) % 2 = 1

Example #1 : 
In this example we can see that by using this mathematics, we are able to perform and understand the negative modulo.
 

Python3




# Using negative modulo
res1 = -5 % 4
res2 = ((-2*4) + 3) % 4
 
print(res1)
print(res2)

Output :

3
3

Example #2 :

Python3




# Using negative modulo
res1 = -3 % 7
res2 = - 12 % 4
 
print(res1)
print(res2)

Output :

4
0
My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!