取模运算和取余运算是两个概念,虽然他们有重叠部分,但又不一致。不一致的地方在于对负整数进行除法时,操作不一样。
对于整数 a 和 b,进行取模运算和取余运算可以总结分为 2 个步骤:
1. 计算整数商: c = 取整(a / b);
2. 计算模或余数:r = a - c * b .
两者的区别就在于第 1 步中的计算整数商不同,取模是向负无穷方向取整(即向下取整),取余是向 0 方向取整(即商大于 0 时向下取整,小于0时向上取整)。
Python3 中两个运算实现方式:
1 # 取模,Python中可直接用%,计算模,r = a % b 2 def mod(a, b): 3 c = a // b 4 r = a - c * b 5 return r 6 7 # 取余 8 def rem(a, b): 9 c = int(a / b) 10 r = a - c * b 11 return r