数论基础:扩展欧几里得和乘法逆元,欧拉函数

扩展欧几里得算法(求ax+by=gcd(a,b)的一组特解)

欧几里得算法(求最大公约数)

gcd(int a,int b)
{
	return b==0?a:gcd(b,a%b);
}

扩展欧几里得

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

斐蜀定理:一定存在ax+by=gcd(a,b)的解

$gcd(a,b)|a => gcd(a,b)|ax $ ----------(1)

$gcd(a,b)|b => gcd(a,b)|by $ ----------(2)

\((1)(2) => gcd(a,b)|ax+by =>ax+by=gcd(a,b)\) 两边同除\(gcd(a,b)\)

\(a_{1}\) \(x_{1}\) + \(b_{1}\) \(y_{1}\) =1 ( \(a_{1}\) , \(b_{1}\) 互质)

\(=>exgcd()\)

扩展欧几里得

\(ax+by=gcd(a,b)\) 的一组特解

\(b=0\)\(x=1,y=0\)

否则先求 \(b,a%b\)的解

求得\(b x_{1} +(a\%b)y_{1} =gcd(b,a\%b)=gcd(a,b)\)

\(bx_{1}+[a-\lfloor a/b \rfloor*b] * y_{1}\)

\(ay_{1}+b(x_{1}-\lfloor a/b \rfloor*y_{1})\)

与ax+by对比,发现只要令\(x=y_{1} y=x_{1}-\lfloor a/b \rfloor*y_{1}\)就能得到特解因此,只要一直递归就能求解

通解(没有遗漏)

\(x= x_{0} +b/gcd(a,b)\)

\(y= y_{0} -a/gcd(a,b)\)

x,y同时变化,带入原式可发现ax+by不变

证明挖坑优秀的证明

upd: 之前一直忽略的点,关于通解,实际上对于\(ax + by = c\)都可以用同样的通解式子

乘法逆元

exgcd

求解逆元\(a\equiv 1(mod\;b)\)相当与解不定方程\(ax+by=1\)

\(a,b\)如果互质,\(exgcd()\)求解即可

费马小定理:

定理: 若p为素数,则有

$ a^{p-1} ≡1(mod p)$

$ a^{p-2} ∗a≡1(mod p)$

\(a^{p-2}\)就是\(a\)\(mod\) \(p\)意义下的逆元

递推求逆元

upd: 记不住怎么办,有个好记的方法,类似求阶乘逆元的方法,处理前缀积,然后费马求出总的逆元再乘回去,实际上这种做法可扩展性非常强

原理:p是模数,i是待求的逆元,我们求的是\(i^{-1}\)\(mod\) \(p\)意义下的值

\(p=k∗i+r\)\(r < i\),则\(k=p/i,r=p\%i\)

\(k∗i+r≡0(mod\;p)\)

\(k∗ r^{-1}+ i^{-1}≡0(mod \;p)\)(两边同乘 $ r^{-1}$ $ i^{-1}$ )

$ i^{-1}≡−k∗ r^{-1}(mod;p)$

$ i^{-1}≡−p/i∗inv[p\%i](mod p)$

所以\(inv[i]=-(p/i)*inv[ p\%i ]\)

边界\(inv[1]=1\)

    inv[1]=1;
    for(int i=2;i<=n;i++)
        inv[i]=(p-p/i)*inv[p%i]%p;
        //(p-p/i)处理了负数问题 因为p%p=0所以对结果无影响

递推求阶乘逆元

因为

\(\frac{1}{(n+1)!} \times (n+1) = \frac{1}{n!}\)

所以处理出\(inv[n!]\)再逆推\(inv[(n-1)!] inv[(n-2)!]\)........

欧拉函数

定义

\(\varphi(n)\)表示\(\sum_{i=1}^{n-1}gcd(i,n)==1?1:0\)

一些性质

  • \(n\)为质数时有\(\varphi(n)=n-1\)

  • \(\varphi(n)\)为积性函数,但不是完全积性函数

即,当\(gcd(a.b)=1\)时有\(\varphi(a*b)=\varphi(a)\times\varphi(b)\)

  • \(n=\sum_{d|n}\varphi(d)\)

证明:

\(gcd(x,n)=y\),那么\(gcd(\frac{x}{y},\frac{n}{y})=1(x<n)\)

\(f_i\)表示\(gcd(x,n)=i\)的数的个数,那么有\(n=\sum_{i=1}^nf_i\)

\(f_i=\varphi(\frac{n}{i})\)

那么\(n=\sum_{i=1}^nf_i=\sum_{d|n}\varphi(\frac{n}{d})\)

\(d\)\(\frac{n}{d}\)具有对称性,所以可以化为\(n=\sum_{d|n}\varphi(d)\)

  • \(p\)为质数,\(n=p^k\),那么\(\varphi(n)=p^k-p^{k-1}\)

因为\(1-p^k\)除了\(p,2p,3p.....p^{k-1}p\)\(p^{k-1}\)\(p\)的倍数外都与\(p^k\)互质

所以\(\varphi(p^k)=p^k-p^{k-1}=p^{k-1}\times(p-1)\)

  • 由唯一分解定理,设\(n = \prod_{i=1}^{s}p_i^{k_i}\) ,其中 \(p_i\)是质数,有 \(\varphi(n) = n \times \prod_{i = 1}^s{\dfrac{p_i - 1}{p_i}}\)

证明:

因为积性

\(\begin{aligned} \varphi(n) &= \prod_{i=1}^{s} \varphi(p_i^{k_i})\end{aligned}\)

因为上一个性质

\(\begin{aligned} &= \prod_{i=1}^{s} (p_i-1)\times {p_i}^{k_i-1}\end{aligned}\)

整理

\(\begin{aligned}&=\prod_{i=1}^{s} {p_i}^{k_i} \times(1 - \frac{1}{p_i})\end{aligned}\)

\(\begin{aligned}&=n~ \prod_{i=1}^{s} (1- \frac{1}{p_i}) \end{aligned}\)

求值

求单个欧拉函数使用\(\varphi(n) = n \times \prod_{i = 1}^s{\dfrac{p_i - 1}{p_i}}\),对\(n\)进行质因数分解即可

\(1-n\)的欧拉函数,使用线性筛

对于质数,显然\(\varphi(n)=n-1\)

对于合数\(n=prime[j]\times i\),分两种情况,就是\(i\%prime[j]\)是否为0

  1. \(i\% prime[j]!=0\) 那么 \(i\)\(prime[j]\)互质\(phi[n]=phi[i]*phi[prime[j]]\)

  2. \(i\%prime[j]=0\)那么\(i\)中有\(n\)的所有因子

\(phi[n] = n \times \prod_{k = 1}^s{\frac{p_k - 1}{p_k}} = prime[j] \times i \times \prod_{k = 1}^s{\frac{p_k - 1}{p_k}} = prime[j] \times phi[i]\)

欧拉定理

\(gcd(a,m)=1\),则\(a^{\varphi(m)} \equiv 1 \pmod{m}\)

特别的,当\(m\)为质数时,就是费马小定理

证明:

\(r_1, r_2, \cdots, r_{\varphi(m)}\)为模\(m\)意义下的一个简化剩余系,则\(ar_1, ar_2, \cdots, ar_{\varphi(m)}\)也为模 意义下的一个简化剩余系。所以\(r_1r_2 \cdots r_{\varphi(m)} \equiv ar_1 \cdot ar_2 \cdots ar_{\varphi(m)} \equiv a^{\varphi(m)}r_1r_2 \cdots r_{\varphi(m)} \pmod{m}\),可约去\(r_1r_2 \cdots r_{\varphi(m)}\),即得\(a^{\varphi(m)} \equiv 1 \pmod{m}\)

扩展欧拉定理

\(a^b \equiv \begin{cases} a^{b\bmod\varphi(p)},\,&\gcd(a,\,p)=1\\ a^b,&\gcd(a,\,p)\ne1,\,b<\varphi(p)\\ a^{b\bmod\varphi(p)+\varphi(p)},&\gcd(a,\,p)\ne1,\,b\ge\varphi(p) \end{cases} \pmod p\)

证明,转一下大佬的博客

posted @ 2022-02-22 11:09  Chen_jr  阅读(53)  评论(1编辑  收藏  举报