c++的模运算

2019-04-13 12:02发布

    在数学里,“模运算”也叫“求余运算”,用mod来表示模运算。 对于 a mod b 可以表示为 a = qb + r,其中q表示商,b表示模数且 b != 0,那么余数 r 满足 0 <= |r| < |b|。     如果a和b都是自然数,那么r肯定大于等于0且小于b的整数,如果a和b有一个是负数,那么r就不唯一。例如: (-3) % 2  : -3 = (-2)*2 + 1,余数是1;-3 = (-1)*2 - 1 ,余数是-1 (-9) % 5  : -9 = (-2)*5 + 1,余数是1;-9 = (-1)*5 - 4 , 余数是-4 从上面两个例子可以得出: 两个余数的绝对值的和等于模数的绝对值。   现在的问题是,两个整数的模运算竟然有两个结果,那么我们到底选择哪一个呢? 在c++中,模运算结果的符号和被除数的符号一致。例如: -5 % 2 = -1,被除数-5是负数,那么余数就是-1 3 % 2 = 1,被除数3是整数,那么余数就是1