余数定理-简单证明

余数定理-简单证明

1. 加法定理

求和取余等于各自取余再求和

( x 1 + x 2 + x 3 + . . . + x n )   %   d = [ ( x 1   %   d ) + ( x 2   %   d ) + ( x 3   %   d ) + . . . + ( x n   %   d ) ]   %   d (x_1+x_2+x_3+...+x_n)\ \%\ d=[(x_1\ \%\ d)+(x_2\ \%\ d)+(x_3\ \%\ d)+...+(x_n\ \%\ d)]\ \%\ d (x1+x2+x3+...+xn) % d=[(x1 % d)+(x2 % d)+(x3 % d)+...+(xn % d)] % d

加法定理其实很直接,参考下面的图应该很好理解

remainder_theorem

其中 ( x 1 + x 2 + x 3 ) % d (x_1+x_2+x_3)\%d (x1+x2+x3)%d 中,绿色部分其实无论有多少块,在最后取余的时候都没有用了,只看黄色的余数部分。

2. 乘法定理

乘积取余等于各自取余再求积

( x 1 ∗ x 2 ∗ x 3 ∗ ⋯ ∗ x n )   %   d = [ ( x 1   %   d ) ∗ ( x 2   %   d ) ∗ ( x 3   %   d ) ∗ ⋯ ∗ ( x n   %   d ) ]   %   d ( x_1 * x_2 * x_3 * \cdots * x_n ) \ \%\ d=[(x_1 \ \%\ d) * (x_2 \ \%\ d) * (x_3 \ \%\ d) * \cdots * (x_n \ \%\ d)]\ \%\ d (x1x2x3xn) % d=[(x1 % d)(x2 % d)(x3 % d)(xn % d)] % d

假设

x 1 ÷ d = y 1 ⋯ ⋯   p 1    ⟺    x 1 = y 1 ∗ d + p 1    ⟹    x 1   %   d = p 1 x_1 \div d = y_1 \cdots\cdots\ p_1 \iff x_1 = y_1 * d + p_1 \implies x_1\ \%\ d=p_1 x1÷d=y1⋯⋯ p1x1=y1d+p1x1 % d=p1

x 2 ÷ d = y 2 ⋯ ⋯   p 2    ⟺    x 2 = y 2 ∗ d + p 2    ⟹    x 2   %   d = p 2 x_2 \div d = y_2 \cdots\cdots\ p_2 \iff x_2 = y_2 * d + p_2 \implies x_2\ \%\ d=p_2 x2÷d=y2⋯⋯ p2x2=y2d+p2x2 % d=p2

x 3 ÷ d = y 3 ⋯ ⋯   p 3    ⟺    x 3 = y 3 ∗ d + p 3    ⟹    x 3   %   d = p 3 x_3 \div d = y_3 \cdots\cdots\ p_3 \iff x_3 = y_3 * d + p_3 \implies x_3\ \%\ d=p_3 x3÷d=y3⋯⋯ p3x3=y3d+p3x3 % d=p3

⋯ ⋯ \cdots\cdots ⋯⋯

x n ÷ d = y n ⋯ ⋯   p n    ⟺    x n = y n ∗ d + p n    ⟹    x n   %   d = p n x_n \div d = y_n \cdots\cdots\ p_n \iff x_n = y_n * d + p_n \implies x_n\ \%\ d=p_n xn÷d=yn⋯⋯ pnxn=ynd+pnxn % d=pn

则有以下

( x 1 ∗ x 2 ∗ x 3 ∗ ⋯ ∗ x n )   %   d ( x_1 * x_2 * x_3 * \cdots * x_n ) \ \%\ d (x1x2x3xn) % d

= [ ( y 1 ∗ d + p 1 ) ∗ ( y 2 ∗ d + p 2 ) ∗ ( y 3 ∗ d + p 3 ) ∗ ⋯ ∗ ( y n ∗ d + p n ) ]   %   d =[ (y_1 * d + p_1) * (y_2 * d + p_2) * (y_3 * d + p_3) * \cdots * (y_n * d + p_n) ] \ \%\ d =[(y1d+p1)(y2d+p2)(y3d+p3)(ynd+pn)] % d

= ( p 1 ∗ p 2 ∗ p 3 ∗ ⋯ ∗ p n )   %   d   ⋯ ⋯   ( 1 ) =(p_1 * p_2 * p_3 * \cdots * p_n) \ \%\ d\ \cdots\cdots\ (1) =(p1p2p3pn) % d ⋯⋯ (1)

= [ ( x 1   %   d ) ∗ ( x 2   %   d ) ∗ ( x 3   %   d ) ∗ ⋯ ∗ ( x n   %   d ) ]   %   d =[(x_1 \ \%\ d) * (x_2 \ \%\ d) * (x_3 \ \%\ d) * \cdots * (x_n \ \%\ d)]\ \%\ d =[(x1 % d)(x2 % d)(x3 % d)(xn % d)] % d

其中 (1) 处应该有 2 n 2^n 2n 项加数,根据 加法 定理,可以让这 2 n 2^n 2n 分别对 d d d 取余然后再求和,但是在所有 2 n 2^n 2n 项中,只有这一项 (i.e., p 1 ∗ p 2 ∗ p 3 ∗ ⋯ ∗ p n p_1 * p_2 * p_3 * \cdots * p_n p1p2p3pn) 是不包含乘数 d d d 的,其它 2 n − 1 2^n-1 2n1 项都是含有乘数 d d d 的,这 2 n − 1 2^n-1 2n1 项分别对 d d d 取余都是 0, 只剩下 p 1 ∗ p 2 ∗ p 3 ∗ ⋯ ∗ p n p_1 * p_2 * p_3 * \cdots * p_n p1p2p3pn 求余。

扩展

假设有下标集合 S = { s 1 , s 2 , s 3 , ⋯ s t } S=\{s_1, s_2, s_3,\cdots s_t\} S={s1,s2,s3,st}

G = [ ( x 1   %   d ) ∗ ( x 2   %   d ) ∗ ⋯ ∗ ( x s 1 − 1   %   d ) ∗ x s 1 ∗ ( x s 1 + 1   %   d ) ∗ ⋯ ∗ x s 2 ∗ ⋯ ∗ x s 3 ∗ ⋯ ∗ x s t ∗ ⋯ ∗ ( x n   %   d ) ]   %   d G=[(x_1 \ \%\ d) * (x_2 \ \%\ d) *\cdots*(x_{s_1-1}\ \%\ d)* x_{s_1}*(x_{s_1+1}\ \%\ d) *\cdots*x_{s_2}*\cdots*x_{s_3}*\cdots*x_{s_t}* \cdots * (x_n \ \%\ d)]\ \%\ d G=[(x1 % d)(x2 % d)(xs11 % d)xs1(xs1+1 % d)xs2xs3xst(xn % d)] % d

即下标刚好在 S S S 的项,不对 d d d 取余,

若有 H H H,所有的项都对 d d d 取余

H = [ ( x 1   %   d ) ∗ ( x 2   %   d ) ∗ ⋯ ∗ ( x s 1 − 1   %   d ) ∗ ( x s 1   %   d ) ∗ ( x s 1 + 1   %   d ) ∗ ⋯ ∗ ( x s 2   %   d ) ∗ ⋯ ∗ ( x s 3   %   d ) ∗ ⋯ ∗ ( x s t   %   d ) ∗ ⋯ ∗ ( x n   %   d ) ]   %   d H=[(x_1 \ \%\ d) * (x_2 \ \%\ d) *\cdots*(x_{s_1-1}\ \%\ d)* (x_{s_1}\ \%\ d)*(x_{s_1+1}\ \%\ d) *\cdots*(x_{s_2}\ \%\ d)*\cdots*(x_{s_3}\ \%\ d)*\cdots*(x_{s_t}\ \%\ d)* \cdots * (x_n \ \%\ d)]\ \%\ d H=[(x1 % d)(x2 % d)(xs11 % d)(xs1 % d)(xs1+1 % d)(xs2 % d)(xs3 % d)(xst % d)(xn % d)] % d

则有 G = H G=H G=H

G = [ ( x 1   %   d ) ∗ ( x 2   %   d ) ∗ ⋯ ∗ ( x s 1 − 1   %   d ) ∗ x s 1 ∗ ( x s 1 + 1   %   d ) ∗ ⋯ ∗ x s 2 ∗ ⋯ ∗ x s 3 ∗ ⋯ ∗ x s t ∗ ⋯ ∗ ( x n   %   d ) ]   %   d G=[(x_1 \ \%\ d) * (x_2 \ \%\ d) *\cdots*(x_{s_1-1}\ \%\ d)* x_{s_1}*(x_{s_1+1}\ \%\ d) *\cdots*x_{s_2}*\cdots*x_{s_3}*\cdots*x_{s_t}* \cdots * (x_n \ \%\ d)]\ \%\ d G=[(x1 % d)(x2 % d)(xs11 % d)xs1(xs1+1 % d)xs2xs3xst(xn % d)] % d

根据 乘法 定理,我们可以把 G G G 中的每一项都添加一个 %   d \%\ d % d

= [ ( x 1   %   d   %   d ) ∗ ( x 2   %   d   %   d ) ∗ ⋯ ∗ ( x s 1 − 1   %   d   %   d ) ∗ ( x s 1   %   d ) ∗ ( x s 1 + 1   %   d   %   d ) ∗ ⋯ ∗ ( x s 2   %   d ) ∗ ⋯ ∗ ( x s 3   %   d ) ∗ ⋯ ∗ ( x s t   %   d ) ∗ ⋯ ∗ ( x n   %   d   %   d ) ]   %   d =[(x_1 \ \%\ d\ \%\ d) * (x_2 \ \%\ d\ \%\ d) *\cdots*(x_{s_1-1}\ \%\ d\ \%\ d)* (x_{s_1}\ \%\ d)*(x_{s_1+1}\ \%\ d\ \%\ d) *\cdots*(x_{s_2}\ \%\ d)*\cdots*(x_{s_3}\ \%\ d)*\cdots*(x_{s_t}\ \%\ d)* \cdots * (x_n \ \%\ d\ \%\ d)]\ \%\ d =[(x1 % d % d)(x2 % d % d)(xs11 % d % d)(xs1 % d)(xs1+1 % d % d)(xs2 % d)(xs3 % d)(xst % d)(xn % d % d)] % d

由于 x 1   %   d   %   d = x 1   %   d x_1\ \%\ d\ \%\ d=x_1\ \%\ d x1 % d % d=x1 % d

= [ ( x 1   %   d ) ∗ ( x 2   %   d ) ∗ ⋯ ∗ ( x s 1 − 1   %   d ) ∗ ( x s 1   %   d ) ∗ ( x s 1 + 1   %   d ) ∗ ⋯ ∗ ( x s 2   %   d ) ∗ ⋯ ∗ ( x s 3   %   d ) ∗ ⋯ ∗ ( x s t   %   d ) ∗ ⋯ ∗ ( x n   %   d ) ]   %   d =[(x_1 \ \%\ d) * (x_2 \ \%\ d) *\cdots*(x_{s_1-1}\ \%\ d)* (x_{s_1}\ \%\ d)*(x_{s_1+1}\ \%\ d) *\cdots*(x_{s_2}\ \%\ d)*\cdots*(x_{s_3}\ \%\ d)*\cdots*(x_{s_t}\ \%\ d)* \cdots * (x_n \ \%\ d)]\ \%\ d =[(x1 % d)(x2 % d)(xs11 % d)(xs1 % d)(xs1+1 % d)(xs2 % d)(xs3 % d)(xst % d)(xn % d)] % d

= H =H =H

= ( x 1 ∗ x 2 ∗ ⋯ ∗ x s 1 − 1 ∗ x s 1 ∗ x s 1 + 1 ∗ ⋯ ∗ x s 2 ∗ ⋯ ∗ x s 3 ∗ ⋯ ∗ x s t ∗ ⋯ ∗ ⋯ ∗ x n )   %   d =( x_1 * x_2 *\cdots* x_{s_1-1}*x_{s_1}*x_{s_1+1}*\cdots*x_{s_2}*\cdots*x_{s_3}*\cdots*x_{s_t}*\cdots * \cdots * x_n ) \ \%\ d =(x1x2xs11xs1xs1+1xs2xs3xstxn) % d

也就是说,一串乘积的取余,既可以让所有项先取余再求积,也可以只让部分项先取余再求积

举个例子

( x 1 ∗ x 2 ∗ x 3 ∗ x 4 ∗ x 5 ∗ x 6 )   %   d ( x_1 * x_2 * x_3 * x_4*x_5 * x_6 ) \ \%\ d (x1x2x3x4x5x6) % d

= [ ( x 1   %   d ) ∗ x 2 ∗ x 3 ∗ x 4 ∗ x 5 ∗ x 6 ) ]   %   d =[ (x_1\ \%\ d) * x_2 * x_3 * x_4*x_5 * x_6 ) ]\ \%\ d =[(x1 % d)x2x3x4x5x6)] % d

= [ ( x 1   %   d ) ∗ ( x 2   %   d ) ∗ x 3 ∗ x 4 ∗ ( x 5   %   d ) ∗ x 6 ) ]   %   d =[ (x_1\ \%\ d) * (x_2\ \%\ d) * x_3 * x_4* (x_5\ \%\ d) * x_6 ) ]\ \%\ d =[(x1 % d)(x2 % d)x3x4(x5 % d)x6)] % d

= [ x 1 ∗ x 2 ∗ ( x 3   %   d ) ∗ ( x 4   %   d ) ∗ x 5 ∗ ( x 6   %   d ) ) ]   %   d =[ x_1 * x_2 * (x_3\ \%\ d) * (x_4\ \%\ d) *x_5 * (x_6\ \%\ d) ) ]\ \%\ d =[x1x2(x3 % d)(x4 % d)x5(x6 % d))] % d

= [ ( x 1   %   d ) ∗ ( x 2   %   d ) ∗ ( x 3   %   d ) ∗ ( x 4   %   d ) ∗ ( x 5   %   d ) ∗ ( x 6   %   d ) ) ]   %   d =[ (x_1\ \%\ d) * (x_2\ \%\ d) *(x_3\ \%\ d) *(x_4\ \%\ d)* (x_5\ \%\ d) * (x_6\ \%\ d) ) ]\ \%\ d =[(x1 % d)(x2 % d)(x3 % d)(x4 % d)(x5 % d)(x6 % d))] % d

记得最后还要再取一次余

3. 参考链接

三大余数定理

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值