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互质时的同余方程组

    捕获

  • 相关阅读:
    LAMP环境搭建博客
    PHP项目中经常用到的无限极分类函数
    在PHP项目中,每个类都要有对应的命名空间,为什么?
    一键解决docker pull hello-world的问题
    网盘10M速度下载-亿寻下载器
    《提问的智慧》
    idea出现 Error:(1, 1) java: 非法字符: 'ufeff'解决方式
    多线程的四种实现方式
    Java中的get()方法和set()方法
    Java构造器(构造方法/constructor)
  • 原文地址:https://www.cnblogs.com/Ch-someone/p/9380529.html
Copyright © 2011-2022 走看看