zoukankan      html  css  js  c++  java
  • 数论

    整理下学过的数论知识

    逆元

    满足(a imes xequiv 1pmod p) 则x为a在模p意义下的逆元 也就是(a^{-1})

    线性求逆元:

    (p = k imes i + r)

    (k imes i+requiv 0pmod p)

    两边同乘(i^{-1} imes r^{-1})

    则有(k imes r^{-1} + i^{-1} equiv 0)

    移项 得(i^{-1} equiv -k imes r^{-1})

    所以(i^{-1} equiv -frac{p}{i} imes (p\% i)^{-1})




    费马小定理求逆元

    (a^{p-1} equiv 1 pmod p)

    前提:a与p互质 且 p为素数

    所以要求a的逆元用快速幂去求(a^{p-1}) 就可以了

    证明:

    引理1: 若(a*b equiv a*c pmod p)((a,p) = 1) 则有(b equiv c pmod p)

    证明:

    (a*b equiv a*c pmod p)

    (a*b - a * c equiv 0 pmod p)

    (a*(b-c) equiv 0 pmod p)

    因为((a,p) = 1)

    所以(b-c equiv 0 pmod p)

    (b equiv c pmod p)


    引理2: 若mod为大于1的整数,((m,b) = 1) ,a[1],a[2]...,a[m]为模m的一个完全剩余系 则有(b*a[1],b*a[2],b*a[3]...b*a[m]) 也为模m的一个完全剩余系

    证明:

    反证,假设有(b*a[1]equiv b*a[2] pmod p),则有引理1知(a[1] equiv a[2]) ,与定义冲突,故假设不成立



    由以上两引理:
    构造p的完全剩余系 (1,2,3...,p-1)

    因为((a,p)=1)

    所以(a,2a,3a,4a...,(p-1)*a) 也是p的完全剩余系

    由完全剩余系性质:

    (1*2*3...*(p-1) equiv a * 2a * 3a... *(p-1)a)

    ((p-1)! equiv a^{p-1}*(p-1)! pmod p)

    又因为p为素数

    所以((p-1)!)可以直接消掉

    (a^{p-1} equiv 1 pmod p)





    欧拉函数通项公式

    首先证明若(n = p^k)(varphi(n) = p^k-p^{k-1}, pin prime)

    显然有除了(p^i),其它项都与(p^k)互质

    所以原式成立

    对于任一整数,求(varphi(n) = n * prod(1-frac{1}{p}))

    首先一定可以把n分解为(n = prod p_i^{k_i})

    假定A,B是与m,n,mn互质的数集, 那么A*B 与 C满足一一对应的关系 (中国剩余定理

    那么显然有(varphi(n) = prod p^k - p^{k-1})

    把所有(p^k)提出 得到

    (varphi(n) = n prod (1 - frac{1}{p}))

    gcd

    关于辗转相除正确性证明

    也就是证明((a,b) = (b,a\% b))

    ((a,b) = d,a = b*k+r)

    ((b,b* k+r) = d)

    则有(d|a,d|{a*k+r})

    (d|r)

    (r=a \% b)

    所以((r,b) = d) 原式得证




    exgcd

    求解(ax+by = gcd(a,b))

    则相当于求解(bx+a\% b *y = gcd(b,a\%b))

    对于这个式子显然可以一直递归 递归到(b=0)的时候有(x=1,y=0)

    那么考虑如何回代,即由当前层求出上一层的(x,y)

    (ax+by = gcd(a,b) = gcd(b,a\%b) = bx' + a\%b * y')

    那么有(ax+by = bx'+a\%b * y')

    (bx' + a\%b * y' = bx' + (a-frac{a}{b}*b )* y')

    (ax + by = ay' + b(x'-frac{a}{b} * y))

    (x = y' , y = (x'-frac{a}{b}* y))

    然后一直回代就可以求解了




    CRT

    求解方程组

    (x equiv a_1 pmod {m_1})

    (x equiv a_2 pmod {m_2})

    (x equiv a_3 pmod {m_3})

    (x equiv a_4 pmod {m_4})

    ...

    (x equiv a_i pmod {m_i})

    满足(m_i)(m_j) 互质((i!=j))

    首先把所有(m)乘起来为Mod

    然后依次去跑每一个方程

    求解方程(frac{Mod}{m_i}*x equiv a_i pmod {m_i}) 并将此时的(frac{Mod}{m_i}*x) 作为该方程的解

    考虑这个方程的解具有什么性质

    因为(Mod) 是所有模数乘起来得到的 所以当前解一定模其它任一膜数都为0

    此时它满足要求的原方程的解的性质

    有一个很显然的公式是(a + b equiv c pmod P)

    如果(a\% P = 0)

    那么有(b \%P = c)

    所以把所有方程的解加在一起正好满足所有方程

    令最后的答案(\%)(Mod) 得到最小解





    EXCRT

  • 相关阅读:
    微信小程序订阅消息
    自动生成小学四则运算题目
    个人项目作业
    自我介绍+软工5问
    软件工程之获小黄衫感言
    2020软件工程个人作业06——软件工程实践总结作业
    2020软件工程作业05
    2020软件工程作业00——问题清单
    2020软件工程作业04
    2020软件工程作业03
  • 原文地址:https://www.cnblogs.com/2004-08-20/p/14251224.html
Copyright © 2011-2022 走看看