zoukankan      html  css  js  c++  java
  • 数论笔记

    数论

    欧几里得算法

    利用

    [gcd(x,y) = gcd(y,x\%y) ]

    可得代码

    void gcd(int x,int y)
    {
        return x%y==0?y:gcd(y,x%y);
    }
    

    证明很简单,人教B版数学必修三

    时间复杂度最大O(log n)

    lcm(x,y) * gcd(x,y) = x * y

    扩展欧几里得算法

    用于求方程ax+by=gcd(a,b) 的一组可行解

    [bx' + (a\% b)y' = gcd(b,a\% b) ]

    [bx' + (a\% b)y' = gcd(a,b) ]

    [bx' + (a-a/b*b)y' = gcd(a,b) ]

    [ay' + b(x' - a/b*y') = gcd(a,b) ]

    即为方程的解

    void exgcd(int a,int b,int &x,int &y)
    {
        if(!b)
        {
            y = 0;
            x = 1;
            return;
        }
        exgcd(b,a%b,y,x);
        y-=a/b*x;
    }
    

    膜的性质

    [(a + b) \% p = (a\%p + b\%p) \%p ]

    [(a - b)\%p = (a\%p - b \%p)\%p ]

    [(a * b)\%p = (a\%p) * (b\%p) \%p ]

    逆元

    对于 ∀ 正整数 x 满足 x < p,gcd(x,p) = 1,存在唯一的正整数 inv[x] 满足 inv[x] < p,x ∗ inv[x] ≡ 1( mod p),我们称 inv[x] 为 x 在模 p 意义下的逆元

    求逆元

    利用费马小定理或扩展gcd

    费马小定理:

    [a^{p-1} equiv 1 (mod p) ]

    [Downarrow ]

    [a^{p-2}equiv a^{-1}(mod p) ]

    所以a模p意义下的逆元是a的p-2次方模p

    利用快速幂,时间复杂度达到O(log n)

    long long qpow(long long a,long long p,long long mod)
    {
    	long long ans;
    	if(p==1) return m % mod;
    	ans = qpow(a,p>>1) % mod;
    	if(!n%2)
    		return ans * ans % mod;
    	else
    		return m * ans * ans % mod;
    }
    

    扩展gcd

    求逆元转化成ax-my = 1

    所以可以用扩展gcd

    代码在上面

    二元一次不定方程

    形如ax + by = c 的方程,求x,y的整数解

    若c不能被gcd(a,b)整除,方程无解

    基于扩展gcd求解

    原方程的一组解为

    [x_2 = x_1frac {c}{gcd(a,b)},y_2 = y_1frac{c}{gcd(a,b)} ]

    原方程的解集为

    [{ (x,y)|x = x_2 + frac{b}{gcd(a,b)},y = y_2 - frac{a}{gcd(a,b)} } ]

    中国剩余定理

    同余方程组

    形如

    [egin{cases} x equiv a_1(mod m_1)\ xequiv a_2(mod m_2)\ vdots\ x equiv a_n(mod m_n) end{cases} ]

    的方程叫做同余方程组

    若x0为方程组的一个最小非负整数解,则解集为

    [{ x| x=x_0 + k * lcm(m_1,m_2cdots m_n)} ]

    因为方程组的两个非负整数解的差一定为 lcm(m 1 ,m 2 ...m n ) 的整数倍
    且 x 0 + k ∗ lcm(m 1 ,m 2 ....m n ) 一定为方程组的解

    中国剩余定理

    中国剩余定理解决m1,m2……mn互质时的同余方程组

    捕获

  • 相关阅读:
    从句分析
    artDialog ( v 6.0.2 ) content 参数引入页面 html 内容
    Java实现 LeetCode 13 罗马数字转整数
    Java实现 LeetCode 13 罗马数字转整数
    Java实现 LeetCode 13 罗马数字转整数
    Java实现 LeetCode 12 整数转罗马数字
    Java实现 LeetCode 12 整数转罗马数字
    Java实现 LeetCode 12 整数转罗马数字
    Java实现 LeetCode 11 盛最多水的容器
    Java实现 LeetCode 11 盛最多水的容器
  • 原文地址:https://www.cnblogs.com/Ch-someone/p/9380529.html
Copyright © 2011-2022 走看看