初等数论相关求模公式运算及证明,多用于hash求模

自然数求模定义:

如果a和d是两个自然数,d非零,可以证明存在两个唯一的整数 q 和 r,满足 a = qd + r 且0 ≤ r < d。其中,q 被称为商,r 被称为余数

整数求模定义:

如果a 与d 是整数,d 非零,那么余数 r 满足这样的关系:a = qd + r , q 为整数,且0 ≤ |r| < |d|

加减乘:[默认a > b > 0,p >0,余数>0].这里我们讨论自然数求模,负数求模要分计算机语言。底层逻辑不同,余数可为正余数和负余数,这里以后讨论

    1        (a + b) % p = (a % p + b % p) % p  = (a % p + b) % p

  2        (a - b) % p = (a % p - b % p) % p  = (a - b%p) % p 

注意2 这个公式不完全适用!!!!。因为会出现a%p - b%p < 0,我们可以利用钟表算时间的思想

        比如 现在时间23:00,求78小时前是几点?本质就是( 23-78)%24 = (23 + 24*3-78) = 17:00

所以改进为

        =>2.1  (a - b) % p = (a % p - b % p +p) % p  = (a - b%p ) % p

        =>2.2  (a - b) % p = (a % p - b  + np) % p, 备注【a%p -b + n*p >0】

  3        (a * b) % p = (a % p * b % p) % p = (a % p * b ) % p 

  4        (a^b) % p = ((a % p)^b) % p 

证:  (a + b) % p = (a % p + b % p) % p 

     核心 a = x * p + k,则 a%p = k。 k < x < a,x为倍数。

解析:任何正整数a,都等于 任意数(比如p) 的倍数 + 余数 。余数 < p

根据上述结论,设a =xp+k,则a % p = k ;b = yp + j,则b % p = j    , k < p且j <p

       1 等号左边=> (a+b)%p == (xp + k +yp + j)%p  == [ (x+y)*p + (k + j) ]%p   = (k + j)%p

解析,因为xp,yp分别能被 p整除,所以[ (x+y)*p + (k + j) ]%p  ==  (k+j)%p   

        2 等号右边=> (a%p + b%p)%p == (k+j)%p

                =>得证相等,加减乘都是同样证明方法,不再一一列举。包括后面结合律分配率也是同样方法


 

结合率

        1        ((a+b) % p + c) % p = (a + (b+c) % p) % p 

        2        ((a*b) % p * c)% p = (a * (b*c) % p) % p 

                证  ((a+b) % p + c) % p = (a + (b+c) % p) % p 

设a =xp+k,则a % p = K ;b = yp + J,则b%p = J;c = zp + L ,c%p = L

1 等号左边=>  

 ((a+b) % p + c) % p = [ ( (x+y) * p + K + J ) % p  + zp + L ] %p == [ ( K + J )%p + (zp + L)  ]%p  

 根据求和公式逆用 [ ( K + J )%p + (zp + L)  ]%p  == (K + J + zp + L)%P   =>  (K + J + L)%P

2 等号右边=>

(a + (b+c) % p) % p  =  [(xp + K) +( ( y+z)*p + J + L)%p ]%p == [(xp + K) + (J + L)%p ]%p

根据求和公式逆用[(xp + K) + (J + L)%p ]%p == [ xp + K + J + L]%p == [k + J + L]%p

        =>得证相等,其它几个证明同理


   分配率

( (a+b)%p *c )%p = ( (ac)%p + (b*c)%p )%p


1  同余定理   m|a-b  等价于 a≡b(mod m)  ;

        

推导过程:

        m|a-b

含义为a-b 能被m整除,即 (a-b) mod m = 0

也是(a-b)/m = r    ,即  a-b  = m * r  ,r是整数。

        a≡b(mod m)     读作a与b对模m同余,

含义是 a mod m = b mod m;

如果满足a mod m = b mod m,那么也必定满足a = m*x + r, b = m*y + r,  =>x,y,r均为整数

a b两数相减,推导出a-b = m*(x-y) ,即(a-b)/m = x-y,因为x-y是整数,所以a-b 能被m整除

也可推出 b = a + m * t,t为任意整数

2 若a≡b(mod m),c≡d(mod m),则a ± c≡b ± d(mod m)

   若a≡b(mod m),b≡c(mod m),则ac≡bd(mod m)

根据1同余定理,a-b = x * m ; c-d = y * m; x,y是整数

        (a-b)-(c-d) = (x-y) * m , 即 (a-c)-(b+d) =  (x-y) * m  ,即 m|(a-c)-(b-d) 

将(a-c)(b-d)分别看成一个成体,同余定理=>(a-c)≡(b-d)(mod m)

        (a-b) + (c-d) = (x + y)*m, 即m|(a+c)-(b+d) , 同余定理 =>(a+c)≡b+d(mod m)

  重要定理:

  若a≡b (% p),则对于任意的c,都有(a + c) ≡ (b + c) (%p);

  若a≡b (% p),则对于任意的c,都有(a * c) ≡ (b * c) (%p);

  若a≡b (% p),c≡d (% p),则 (a + c) ≡ (b + d) (%p),(a - c) ≡ (b - d) (%p),

                                                 (a * c) ≡ (b * d) (%p) ,(a / c) ≡ (b / d) (%p)

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值