简单数论学习笔记

简单数论学习笔记

整除

\(a=bk\),且\(a,b,k\)均为整数时,称为b整除a,记为\(b|a\)

b为除数,a为被除数

质数与合数

质数与合数的定义不再赘述。

不大于\(n\)的质数约有\(\frac{n}{\ln n}\)

带余除法、同余

\(a\equiv b\pmod c\),表示\(a\%c=b\%c\)

性质:\(a\equiv b\pmod c\)\(c|(a-b)\)等价

推论:若\(a\equiv b \pmod c,d|c\),则\(a\equiv b \pmod d\)

GCD

一些性质:\((0,a)=a,(a,b)=(a,a+b)=(a,ka+b)\)

第一条性质:由于任何数都整除\(0\),所以任何数都是\(0\)的约数,由此易得。

第二条性质:由\(c|a,c|b \Leftrightarrow c|(a+b)\) ,易得。

由此可以证明欧几里得算法的正确性,即\((a,b)=(a,b\%a)\)

EXGCD

用于求解形如\(ax+by=k\)的不定方程。

方程有解当且仅当\((a,b)|k\)

示例:EXGCD证明裴蜀定理

\[r=a\%b,a>b,d=(a,b)\\ \]

​ 求解:\(ax+by=d\quad\)

​ 可以得到\(a=kb+r(r\le b)\),根据欧几里得算法\((a,b)=(b,a\%b)=(b,r)\),且在算法的最后一定会得到\((d,0)=d\)

\(dx+0y=d\)显然有解\(x=1,y=0\)

\[\begin{align} 已知bx_0+ry_0&=d\\ ax+by&=d\\ (kb+r)x+by&=d\\ b(kx+y)+rx&=d\\ 所以x=y_0,y&=x_0-ky_0 \end{align} \]

​ 因此必然存在一组解,使\(ax+by=(a,b)\)成立。

当然,这个过程也得出了EXGCD的递归模式。

对于求不定方程多组解的问题,我们通常使用这样的方法:

首先用EXGCD求出一个特殊解\(x_0,y_0\),然后构造出\(ax+by=0\)的通解,也就是\(x=\frac{b}{(a,b)},y=\frac{-a}{(a,b)}\)

然后令\(x=x_0+\frac{b}{(a,b)},y=y_0-\frac{a}{(a,b)}\)

由于一个数(模数小于该数)取模之后至多为原来的一半,所以时间复杂度为\(O(\log_2n)\)

例题

Luogu P3951 小凯的疑惑

题意大致为\((a,b)=1\quad\forall x,y\in N,ax+by\)不能表示的最大数值。

假设这个数为\(k-1\),那么显然我们可以构造出\(①:ax+by=k\)

根据题意可以得到\(②:ax_0+by_0=1\),显然此时\(x_0,y_0\)不可能同号。假设\(x_{min},y_{min}\)\(ax+by=1\)\(x,y\)分别最小的非负整数解。

\(①-②\)\(a(x-x_0)+b(y-y_0)=k-1\),根据裴蜀定理,此方程必定有解。又从题目条件推导,可以得到\(x-x_0<0或y-y_0<0\)

\(x_0=x_{min}\),此时对应的\(y_0\)为负数,所以\(y-y_0>0\),由此可以得到\(x-x_{min}<0\)

同理可以得到\(y-y_{min}<0\)

同时符合两个约束的时候的时候,此时的\(k-1\)是不合法的。

在仅符合一个约束时,若仅符合第一个约束,则有\(y-y_{min}\geq0\)那么当\(y=y_{min}\)时,\(x-x_0>0\),不合题意。

由于我们要寻求最大值的\(k\),所以\(x,y\)尽可能大,所以\(x=x_{min}-1,y=y_{min}-1\)

逆元

\(ax\equiv 1 \pmod b\),则称\(x\)\(a\)关于模\(b\)的逆元,记作\(a^{-1}\)

在高中与初中的数学中,我们把这样具有类似这种性质的数称之为倒数。

事实上,它们的意义是相似的,可以将除法运算转化为乘法运算,便于求余。

在上述式子中,\(\frac{c}{a}=c*x\)

可以发现上述式子等价于\(ax+by=1\Leftrightarrow(a,b)=1\quad\),直接利用EXGCD求解即可。

通常模数\(p\)为质数。

当我们要求\([1,n]\)的逆元时,当\(n\)足够大时,EXGCD就显得不太够用了。

对于这样的问题我们有如下公式推导:

假定我们要求\(i\)的逆元,模数为\(p\)\(p\)为质数)。

显然可以得到\(p=ki+r\),因为\(p\)为质数,所以\(r!=0\),即存在\(r\)的逆元。

\[\begin{align} ki+r&\equiv p \pmod p\\ ki+r&\equiv 0 \pmod p\\ 两边同时乘r^{-1}i^{-1},得到:kr^{-1}+i^{-1}&\equiv0 \pmod p\\ 根据同余式的性质,得到:i^{-1}&\equiv-kr^{-1}\pmod p\\ i^{-1}&\equiv (-p/i)*r^{-1}\pmod p\\ i^{-1}&\equiv (p-p/i)*r^{-1}\pmod p\\ \end{align} \]

线性同余方程

形如\(ax\equiv c \pmod b\),称为线性同余方程。

等价于\(ax+by=c\),有解条件为\((a,b)|c\)

对于线性同余方程组,有一种可行的解法:

\[\begin{align} \left\{ \begin{array}{**lr**} {x\equiv 2 \pmod {3}\\ x\equiv 3 \pmod {5}\\ x\equiv 5 \pmod {7}\\ ...}\\ \end{array} \right. \end{align}\]

\(x=3a+2\),代入第二条得到\(3a+2\equiv 3 \pmod 5\),解得\(a\equiv 2 \pmod 5\)。设\(a=5b+2\),代入第三条得到\(3(5b+2)+2\equiv 5 \pmod 7\),显然有\(b\equiv 4\pmod 7\)

最后代回\(x=3a+2\)即可得到\(x\)在模\(105\)意义下的唯一解。

中国剩余定理

对于模数两两互质的线性同余方程组,如

\[\begin{align} \left\{ \begin{array}{**lr**} {x\equiv a_1 \pmod {m_1}\\ x\equiv a_2 \pmod {m_2}\\ x\equiv a_2 \pmod {m_2}\\ ...}\\ \end{array} \right. \end{align} \]

其中\(m_1,m_2,...,m_n\)两两互质,定理给出了构造解的方法。

\(M=\prod_{i=1}^{n}m_i,M_i=\frac{M}{m_i}\)

显然\(M_i\)\(m_i\)互质,存在\(M_i\)在模\(m_i\)意义下的逆元\(t_i\)\(\forall j!=i,M_i\equiv0 \pmod {m_j}\)

此时有解\(x\equiv \sum_{i=1}^n a_iM_it_i \pmod M\)

可以自行验证。

卢卡斯定理

对于组合数取模问题,有卢卡斯定理:

\[C(m,n)\equiv C(m/p,n/p)*C(m\%p,n\%p)\pmod p \]

证明:不会

Luogu P3807 卢卡斯定理

预处理出阶乘和逆元,直接利用上述式子递归求解即可。

注意边界条件:

​ 1.当\(m<n\),有\(C(m,n)=0\)

​ 2.当\(n=0\),有\(C(m,n)=1\)

欧拉函数

欧拉函数\(\varphi(n)\)表示区间\([1,n]\)\(n\)互质的数的个数。

推论:

  • \(n\)为质数,则\(\varphi(n)=n-1\)
  • \(n\geq3\),则\(\varphi(n)\)为偶数。
  • 欧拉函数是积性函数,当\(gcd(a,b)=1\),有\(\varphi(a*b)=\varphi(a)*\varphi(b)\)
  • \(n=p^k\)\(p\)为质数,则有\(\varphi(n)=n(1-1 / p)\)
  • 基于性质4,可以推导出:若\(n\)\(k\)个不同的质因子,分别为:\(p_1,p_2,p_3...p_k\),那么\(\varphi(n)=n(1-1/p_1)(1-1/p_2)(1-1/p_3)...(1-1/p_k)\)

性质1不证自明。

性质2只需要证明若\((a,n)=1\),则\((n-a,a)=1\)。反证法易得。

性质3证明如下:

​ 定义集合\(A(n)=\{x|x\in [1,n],(x,n)=1\}\)

​ 在\(A(a)\)\(A(b)\)中任取两个元素\(a_0\),\(b_0\),构造线性同余方程组\(\{x\equiv a_0 \pmod a,x\equiv b_0 \pmod b\}\),利用中国剩余定理构造出一个唯一对应的元素\(x\equiv c \pmod {ab}\)

显然有\((c,a)=(a,c\%a)=(a,a_0)=1\),同理有\((c,b)=1\),则说明\((a_0,b_0)\)对应唯一的元素\(c \in A(ab)\)

反之任取\(A(ab)\)的一个元素\(c\),可以构造出\(a_0=c\%a,b_0=c\%b\)

显然有\((c,a)=(c,b)=1\),所以有\((a,a_0)=(b,b_0)=1\)。也就是说\(A(ab)\)中的任意一个元素对应一组有序实数对\((a_0,b_0)\),其中\(a_0\in A(a),b_0\in A(b)\)

综上所述,\(A(a),A(b)\)的笛卡尔积(直积)与\(A(ab)\)构成双射。

于是命题得证。

性质4证明如下:\(\forall x \in[1,n]\),如果有\((n,x)>1\),则显然有\(p|x\),可以得到这样的\(x\)\(n/p\)个,那么剩下的数就有\(n-n/p\),所以\(\varphi(n)=n(1-1/p)\)

性质5证明如下:将\(n\)分解质因数,套用性质4和性质3,即可证明。

笛卡尔积

又称直积,集合\(A,B\)的笛卡尔积为集合\(\{(a,b)|a\in A,b\in B\}\)

欧拉定理

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

\(n\)为质数,则有\(a^{n-1}\equiv 1 \pmod n\),即费马小定理。

证明:待填坑

欧拉定理求逆元

\(a*a^{\varphi(n)-1}\equiv1\pmod n\)

利用快速幂求解即可。

欧拉定理缩小指数

\(a^b\mod p\)时,如果\((a,p)=1\),则可以得到\(a^{\varphi(p)}\equiv1\pmod p\),所以\(a^b\equiv a^{b\mod\varphi(p)}\mod p\)

拓展欧拉定理

\(a^{2\varphi(n)}\equiv a^{\varphi(n)} \pmod n\)

\(a^b\mod p\)时,若\(b\geq\varphi(p)\),则\(a^b\equiv a^{b\mod \varphi(p)+\varphi(p)}\pmod p\)

欧拉函数的求法1(质因数分解,只求单个)

int phi(int n)
{
    int ret=n;
    for (int i=2;i*i<=n;i++)
    {
        if (n%i==0)
        {
        	while(n%i==0) n/=i;
        	ret=ret/i*(i-1);//相当于*(1-1/p)   
        }
    }
    if (n>1) ret=ret/n*(n-1);
    return ret;
}

时间复杂度:\(O(\sqrt n)\)

欧拉函数的求法2(线性筛法,求出1~n)

int phi(int n)
{
    for (int i=2;i<=n;i++)
    {
        if (v[i]==0) 
        {
            v[i]=i;
            rec[++cnt]=i;
            phi[i]=i-1;//p为质数时,phi(p)=p-1
        }
        for (int j=1;j<=cnt;j++)
        {
            if (rec[j]>v[i]||rec[j]>n/i) break;
            v[i*rec[j]]=rec[j];
            if (i%rec[j]!=0) phi[i*rec[j]]=phi[i]*phi[rec[j]];//符合积性函数的条件
            else phi[i*rec[j]]=phi[i]*rec[j];//详细见下面的分析
        }
    }
}

众所周知:当\(p\)为质数时\(\varphi(p^k)=p^k(1-1/p)\)。(证明上面有)

那么\(\varphi(p^{k-1})=p^{k-1}(1-1/p)\),两边同时乘\(p\),得到:\(p*\varphi(p^{k-1})=p^k(1-1/p)\)

由上可得,\(\varphi(p^k)=p*\varphi(p^{k-1})\)

如果\(i \mod p=0\)\(p\)为质数,意味着\(i=p^k\)或者\(i=p^k*q\)

\(i=p^k\),则\(\varphi(i)=p*\varphi(p^{k-1})\),此时\(p^{k-1}\)就是我们当前的合数,即程序中的第一重循环。

\(i=p^k*q\),则\(\varphi(i)=p*\varphi(p^{k-1})*\varphi(q)=p*\varphi(p^{k-1}*q)\),可以发现此时\(p^{k-1}*q\),也是我们当前的合数。

那么程序中的语句就分析完毕了。

时间复杂度:\(O(n)\)

posted @ 2020-04-28 14:07  Nanjo  阅读(347)  评论(0编辑  收藏  举报