zoukankan      html  css  js  c++  java
  • 转载_模运算_归纳得很精华啊

    很多地方用到模运算,这里说明模运算的一些规律,并加以证明。 后续会对这些理论实际的应用加以记录和说明。

    1. 模运算是取余运算(记做 % 或者 mod),具有周期性的特点。 m%n的意思是n除m后的余数, 当m递增时m%n呈现周期性特点, 并且n越大,周期越长,周期等于n。 
        例如
           0 % 20 = 0,1 % 20 = 1, 2 % 20 = 2, 3 % 20 = 3, ..., 19 % 20 = 19
          20 % 20 = 0,21 % 20 = 1,22 % 20 = 2,23 % 20 = 3, ...,39 % 20 = 19
    2. 如果 m % n = r,那么可以推出如下等式
        m = k * n + r (k为大于等于0的整数, r <= m)
    3. 同余式, 表示正整数a,b对n取模,它们的余数相同,记做 a ≡ b mod n或者a = b (mod n)。
       根据2的等式可以推出 a = kn + b 或者 a - b = kn
       证明:  ∵ a = k1 * n + r1
                 b = k2 * n + r2
              ∴ a - b = (k1 - k2) * n + (r1 - r2)
                 a = k * n + (r1 - r2) + b
              ∵ a, b对n取模同余,r1 = r2
              ∴ a = k * n + b (k = k1 - k2)
    4. 模运算规则, 模运算与基本四则运算有些相似,但是除法例外。其规则如下
       (a + b) % n = (a % n + b % n) % n            (1)
       (a - b) % n = (a % n - b % n) % n            (2) 
       (a * b) % n = (a % n * b % n) % n            (3)
        a% n = ((a % n)b) % n                      (4)

    (1)式证明
    ∵ a = k1*n + r1

       b = k2*n + r2

      a % n = r1

      b % n = r2

    ∴(a+b) % n = ((k1+k2)*n + (r1+r2)) % n = (r1+r2) % n = (a % n + b % n)% n
        得证
    (2)式证明同上
    (3)式证明
         a = k1*n + r1
         b = k2*n + r2
         (a*b) % n = (k1k2n2 + (k1r2+k2r1)n + r1r2) % n = r1r2 % n = (a %n * b %n ) % n
     (4)式证明
          设 a % n = r
          a%n= (a * a * a * a…*a) %n = (a %n * a %n * a %n * … * a %n) %n = rb % n = ((a % n) b) % n
      
    模运算看起来不是很直观,但是可以用来推导出一些有用的东西。 例如(4)式可以用来降幂运算,例如计算6265 % 133,直接计算的话需要算出6265 利用(4)式可以进行降幂运算。
      6265 % 133
      = 62 * 6264 % 133
      = 62 * (622)32 % 133
      = 62 * 384432 % 133
      = 62 * (3844 % 133)32 % 133
      = 62 * 12032 % 133

      = 62 * 3616 % 133
      = 62 * 998 % 133
      = 62 * 924 % 133
      = 62 * 852 % 133
      = 62 * 43 % 133
      = 2666 % 133
      = 6

  • 相关阅读:
    chrome调试工具常用功能整理(转)
    js事件的相关收集
    键盘事件之keydown keypress keyup区别
    性能监控系统的搭建(转)
    关于浏览器并发请求数的研究及优化
    http头部信息研究
    什么是HTTP Keep-Alive呢?
    JavaScript跨域深入研究与解决办法(转)
    LRU Cache
    字节对齐&&sizeof
  • 原文地址:https://www.cnblogs.com/cchun/p/2603594.html
Copyright © 2011-2022 走看看