• 中国剩余定理介绍


    学数论中我们听说过中国剩余定理,也称孙子定理
    那么它到底是什么呢?自搜百度百科

    好了开始讲~

    首先の铺垫

    (a)%(b=c)

    ((a imes k))%(b=(c imes k))%(b)

    (感性理解即可证明,后面要用)

    引入一个例子(也是此定理的来源)

    求一个数最小的正整数x满足:
    (egin{cases}{xequiv2mod3}&\{xequiv3mod5}&\ {xequiv2mod7}&end{cases})

    这道题当时给出了一种做法:

    先找出(x_1,x_2,x_3)满足
    (egin{cases}{x_1equiv 2mod3}\{(5 imes7)|x_1}end{cases})

    (egin{cases}{x_2equiv 3mod5}\{(3 imes7)|x_2}end{cases})

    (egin{cases}{x_3equiv 2mod7}\{(3 imes5)|x_3}end{cases})

    (x_1=35) (x_2=63) (x_3=30)

    答案就是((x_1+x_2+x_3)mod gcd(3,5,7)=128mod 105=23)

    推广一下

    概述来看这个中国剩余定理就是:

    要求正整数x满足:
    (egin{cases}{xequiv c_1mod m_1}\{xequiv c_2mod m_2}\{quadvdots}\{xequiv c_nmod m_n}end{cases})

    做法为:设(sum=m_1 imes m_2 imes cdots imes m_n)
    那么找出(x_1,x_2,…,x_n)满足:
    (egin{cases}{x_1equiv 1mod m_1}\{(sum/m_1)|x_1}end{cases})

    (egin{cases}{x_2equiv 1mod m_2}\{(sum/m_2)|x_2}end{cases})

    (egin{cases}{x_3equiv 1mod m_3}\{(sum/m_3)|x_3}end{cases})

    (x_i)应包含(sum/m_i),才可以满足第二个条件
    要满足((sum/m_i))乘一个数(mod) (m_i)(1)
    则那个数就是((sum/m_i))的模(m_i)的逆元,表示为((sum/m_i)^{-1})
    再结合下前置芝士可得最后的(x)的表达:

    (displaystylesum^{n}_{i=1}c_i imes(sum/m_i) imes(sum/m_i)^{-1 (注意是mod m_i的逆元)})

    结语

    好了就是这些
    逆元的话就作为自学知识吧,之后会附上关于逆元的介绍
    百度百科上说的比较奇妙,较为难懂
    希望上述说的知识大家可以理解!!

    Reality&Imagine
  • 相关阅读:
    java抽象类怎么实例化了及C++中抽象类的构造函数
    树及其遍历
    C++中类的多态与虚函数的使用
    C++中#if #ifdef 的作用
    用链表实现两大数相乘
    C++中的链表类的设计
    IPicture总结
    c++标准库中,含有链表的类list
    TCP/IP、Http的区别
    C语言单链表实现19个功能完全详解
  • 原文地址:https://www.cnblogs.com/yang-RA-NOI/p/13441019.html
Copyright © 2020-2023  润新知