1、问题描述:取模操作‘%’是经常遇到的一种操作,对于正数之间的取模操作可以很好的理解,但如果取模之中有一个是负数该怎么处理呢?今天就从本质上来解决它。
2、问题解决:
首先介绍一个定理——带余除法定理。
设
b
∈
Z
(
整
数
)
,
b
≠
0
b\in Z(整数),b\neq0
b∈Z(整数),b=0,则任意整数
a
a
a可以表示为下面的形式:
a
=
b
q
+
r
,
其
中
q
,
r
∈
Z
,
且
0
≤
r
<
∣
b
∣
a = bq+r,其中q,r\in Z,且0\leq r < |b|
a=bq+r,其中q,r∈Z,且0≤r<∣b∣
证明:
只就
b
>
0
b>0
b>0的情形证明,在以下数列:
. . . , − 3 b , − 2 b , − b , 0 , b , 2 b , 3 b , . . . ...,-3b,-2b,-b,0,b,2b,3b,... ...,−3b,−2b,−b,0,b,2b,3b,...,
总存在 q ∈ Z q\in Z q∈Z,使得 b q ≤ a ≤ b ( q + 1 ) bq\leq a \leq b(q+1) bq≤a≤b(q+1) ,
于是 0 ≤ a − b q ≤ b , 令 r = a − b q 0\leq a-bq \leq b, 令r=a-bq 0≤a−bq≤b,令r=a−bq,
则 a = b q + r , 0 ≤ r ≤ b . a = bq+r,0\leq r \leq b. a=bq+r,0≤r≤b.
假设另有表达式 a = b q 1 + r 1 , 0 ≤ r 1 ≤ b a=bq_{1}+r_{1},0 \leq r_{1} \leq b a=bq1+r1,0≤r1≤b,
则 0 = b ( q − q 1 ) + r − r 1 0=b(q-q_{1})+r-r_{1} 0=b(q−q1)+r−r1,
所以 ( r − r 1 ) (r-r_{1}) (r−r1)是b的倍数,
但 ∣ r − r 1 ∣ < b |r-r_{1}| < b ∣r−r1∣<b,
于是只有 r − r 1 = 0 r-r_{1} = 0 r−r1=0,从而 q = q 1 q=q_{1} q=q1,证毕。
从上面的定理我们可以直到,所谓的取模运算就是求解 r r r的过程。
4%(-6)
4 = -6*(-1)-2
所以结果为-2
又比如
(-4)%6
-4 = 6*(-1)+2
所以结果为2
如果对你的问题解决有帮助,麻烦点个赞。😄