Wednesday, September 3, 2025
HomeLanguagesHow to perform modulo with negative values in Python?

How to perform modulo with negative values in Python?

Taking the 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 numbers then it will become a huge blunder.
 

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 returns 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

Approach:

Import the math module at the beginning of your code. This module provides access to mathematical functions, including fmod().

Define the values of x and y that you want to perform modulo on. In this example, x is -10 and y is 3.

Call the math.fmod() function, passing in x and y as arguments. This function returns the remainder of dividing x by y, with the sign of x.

Print the result to the console to verify that the function worked correctly.

Python3




import math
 
x = -10
y = 3
 
result = math.fmod(x, y)
 
print(result)  # Output: -1.0


Output

-1.0

Time complexity:

The time complexity of the math.fmod() function is O(1), which means that it takes a constant amount of time to execute regardless of the size of the input values.
Space complexity:

The auxiliary space of the math.fmod() function is also O(1), as it only requires a small amount of memory to store the input values and the result.

RELATED ARTICLES

Most Popular

Dominic
32260 POSTS0 COMMENTS
Milvus
81 POSTS0 COMMENTS
Nango Kala
6625 POSTS0 COMMENTS
Nicole Veronica
11795 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11855 POSTS0 COMMENTS
Shaida Kate Naidoo
6746 POSTS0 COMMENTS
Ted Musemwa
7023 POSTS0 COMMENTS
Thapelo Manthata
6694 POSTS0 COMMENTS
Umr Jansen
6714 POSTS0 COMMENTS