zoukankan      html  css  js  c++  java
  • 清北学堂-DAY2-数论专题-中国剩余定理(CRT)


    首先请看定义:(百科上抄下来的)孙子定理是中国古代求解一次同余式组(见同余)的方法。是数论中一个重要定理。又称中国余数定理。

    一元线性同余方程组问题最早可见于中国南北朝时期(公元5世纪)的数学著作《孙子算经》卷下第二十六题,叫做“物不知数”问题。

    原文如下:
    **有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?
    **

    即,一个整数除以三余二,除以五余三,除以七余二,求这个整数。《孙子算经》中首次提到了同余方程组问题,以及以上具体问题的解法,因此在中文数学文献中也会将中国剩余定理称为孙子定理。


    通俗点讲呢就是这样一个问题:

    有一堆物品,数量为n个。

    把它三个三个一分组多出来2个,即n%3=2。
    把它五个五个一分组多出来3个,即n%5=3。
    把它七个七个一分组多出来2个,即n%7=2.

    问这堆物品有多少个,即n=?

    看起来是不是比较棘手?当然暴力的话是可以解出来的,但是有什么更快的方法呢?

    首先我们设n1%3=2,即n1=3k+2;
    同理n2=5k+3,n3=7k+2;
    那么可不可以找到一个数n=n1+n2+n3使得满足上述所有条件?

    在这之前我们需要一个知识点:**若a%b=c,则易知(a+k*b)%b=c.
    **

    再对问题进一步简化,怎样求出一个一个数x=n1+n2满足x%3=2且x%5=3?

    这时候就要用到刚刚的推论,已知n1%3=2,若使(n1+n2)%3=2,则需n2是3的整数倍.同样的,n1也必须是5的整数倍。

    于是,要找到一个解n=n1+n2+n3则需以下条件:

      - n1%3=2且n1是5和7的公倍数
      - n2%5=3且n2是3和7的公倍数
      - n3%7=2且n3是3和5的公倍数
    

    也就是说我们只要找到一个是5和7的公倍数且这个数模3得2,一个是3和7的公倍数且这个数模5得3,一个是3和5的公倍数且这个数模7得2(可知每种数有无数个)。然后把这三个数加起来就是我们要的一个解

    接下来的求解就要逆元知识,简单点讲就是:

     若a*b%p=1(或写成a*b=1(mod p)),
     则我们称b是a关于p的逆元。
      前提:a,b互质
     我们已知a和p,就可以求出a关于p的逆元
    

    那么,对于n1来说,假如我们知道一个5和7的公倍数M,又知道M mod 3=2,若我们能像求逆元一样求出一个数b使得M×b%3=2,我们就得到符合条件的n1=M×b,但是逆元中的余数是1,那该怎么办呢??

    我们不妨先求出5和7公倍数M于3的逆元b1,即M×b1%3=1,而我们要求的是M×b%3=2.容易看出,只要我们把上式乘以2得到M×2×b1%3=2。

    也就是说,只要将5和7的公倍数乘以它的逆元再乘以2就是我们要的n1。同理也可以求到n2,n3。n1+n2+n3就是其中一个解。

    通常为了方便起见,我们就直接将5×7作为
    他们的公倍数,即n1=5×7×inv(5×7,3)×2,inv(a,p)表示a关于p的逆元。


    于是一般地对于:

    假设整数m1,m2,... ,mk两两互质,则对任意的整数:a1,a2, ... ,an,方程组 有解,并且通解可以用如下方式构造得到:

    关于的逆元。


    也许你会好奇为什么x不应该是等于右式而是同余于M呢?

    这又要前面的知识:

    若a%b=c,则易知(a-k*b)%b=c.

    则同时加(或减)M是不会对解的正确性有影响的。于是如果你想求最小整数解只需把n1+n2+n3+n4...(还记得一开始的例子吗?)的结果mod M.

  • 相关阅读:
    2016年上半年中小学教师资格考试综合素质试题(中学)
    2015年上半年教师资格证考试《中学综合素质》真题--解析
    2014年下半年教师资格证考试《中学综合素质》真题--解析
    2014年上半年教师资格证考试《中学综合素质》真题--解析
    2013年下半年教师资格证考试《中学综合素质》真题--解析
    CSS3新特性
    到底什么是JS原型
    vue路由的两种方式(路由传参)
    vue项目实现路由按需加载(路由懒加载)的3种方式
    js中对象的合并
  • 原文地址:https://www.cnblogs.com/Rye-Catcher/p/8478855.html
Copyright © 2011-2022 走看看