Open In App

How to perform modulo with negative values in Python?

Last Updated : 21 Aug, 2024
Comments
Improve
Suggest changes
Like Article
Like
Report

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.

Python
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.


Negative Module in Python
Article Tags :
Practice Tags :

Similar Reads

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy