The modulus operator (%
) in Python does not provide a positive modulo when the dividend is negative. However, you can use a simple formula to ensure a positive remainder:
def positive_modulo(dividend, divisor):
return (dividend % divisor + divisor) % divisor
Example
dividend = -17
divisor = 5
positive_modulo = (dividend % divisor + divisor) % divisor
print(positive_modulo) # Output: 3
In the code snippet above, we calculate (dividend % divisor + divisor) % divisor
to obtain the positive modulo. This formula works by adding the divisor to the result of dividend % divisor
and then taking the modulus of the sum with the divisor again.
This guarantees a positive remainder regardless of the signs of the dividend and divisor. In this case, the positive modulo of -17 divided by 5 is 3.
Positive mod in Python example
Here’s an example that demonstrates how to calculate the positive modulo of a negative dividend in Python:
def positive_modulo(dividend, divisor):
return (dividend % divisor + divisor) % divisor
dividend = -17
divisor = 5
positive_modulo_result = positive_modulo(dividend, divisor)
print(positive_modulo_result)
Output:
In the example above, we define a function called positive_modulo
that implements the formula (dividend % divisor + divisor) % divisor
to calculate the positive modulo. We pass the negative dividend -17
and divisor 5
to the function, and it returns the positive modulo 3
.
Do comment if you have any doubts or suggestions on this Python topic.
Note: IDE: PyCharm 2021.3.3 (Community Edition)
Windows 10
Python 3.10.1
All Python Examples are in Python 3, so Maybe its different from python 2 or upgraded versions.