underthetwilight

[数论]数论基础

\(1.\)基础数论

\((1).\) 带余除法

在小学三年级我们学习了带余除法,他的一般形式是

\[x\div y=z......w \]

也就是\(x\times z+w=y\),于是我们引入同余方程

\[x \equiv w \pmod y \]

同余方程有以下性质
假设我们有\(x \equiv p \pmod y ,t\equiv q \pmod y\)
\((\text i).\)\(x+k\times y \equiv p\pmod y\)
\((\text{ii}).\)\(x+k\times t\equiv p+k\times q\pmod y\)
\((\text{iii}).\)\(x\times t\equiv p\times q \pmod y\)
\((\text{iv}).\)\(x^n\equiv p^n\pmod y\)
\((\text V).\)\(ac\equiv bc \pmod y\)\(a\equiv b\pmod {\frac{y}{gcd(y,c)}}\)

\((2).\)算数基本定理

\[\forall x\in N_*,x=\prod_{i=1}^{+\infty} {p_i^{\alpha_i}} \]

其中\({p_1,p_2...p_i...}\)为全部的质数,\({\forall i\in \mathbb N+,\alpha_i\in \mathbb N}\)

\((3).\)剩余系

(i).完全剩余系:若集合\(A={a_1,a_2...a_m}\)满足\(\forall i\neq j,a[i]\not\equiv a[j]\pmod m\)则称\(A\)为模\(m\)意义下的一个完系
(ii)设 \(m\) 为正整数。若一组整数 \(a_1, a_2, \dots, a_s\) 满足以下三个条件,则称它们为模 \(m\) 的一个简化剩余系(缩系):
\(.\forall i\in[1,s],gcd(a_i,m)=1\)
\(.\forall i\neq j,a[i]\not\equiv a[j]\pmod m\)
\(. \forall x\in \mathbb Z,gcd(x,m)=1,\exists! i,a[i]\equiv x\pmod m\)

\((4).\)裴蜀定理(贝祖定理)

\[\forall a,b\in \mathbb Z,ab\neq 0,d=gcd(a,b),\exists x,y\in \mathbb Z使得ax+by=d \]

证明: 考虑构造集合\(A=\{ax+by\mid x,y\in\mathbb Z,ax+by>0\}\)
\(\because ab\neq 0\)
\(\therefore A\neq\)
取其中最小元素设为\(m,\therefore m=ax_0+by_0\)
\(a=qm+r,a=q(ax_0+by_0)+r\therefore r=a(1-qx_0)-by_0\)
\(r\neq 0\Rightarrow r \in A\)
\(\therefore r=0\Rightarrow m\mid a\)同理可得\(m\mid b\)
\(\therefore m\le d\)
\(d>0,\forall x,y,d\mid ax+by\therefore d\mid m\Rightarrow d\ge m\)
所以有\(d=m,x_0,y_0\) 即所求解

\((5).exgcd\)

(i).目的:解决不定方程\(ax+by=c\) 的解
(ii).因为裴蜀定理,若\(c\)不是\(gcd(a,b)\)的倍数,则必然无解
引理:\(gcd(a,b)=gcd(b,a\%b)\)
证明: \(a=qb+r \forall d,d|a,d|b\Rightarrow d|(a-qb)\Rightarrow d|r\) 所以我们有:\(a,b\)的任意公约数都是\(b,r\)的公约数
\(\forall d_1|r,d_1|b,\Rightarrow d_1|qb+r\Rightarrow d_1|a\)所以我们有:\(b,r\)的任意公约数都是\(a,b\)的公约数,所以\(gcd(a,b)=gcd(b,a\%b)\)

(iii).假如在递归的某一层,我们知道了下一层的解 \(x_1,y_1\)
则有\(ay_1+b(x_1-\lfloor \frac ab\rfloor y_1)=c\)所以有:
\(\begin{cases} x = y_1 \\ y = x_1 - \lfloor a / b \rfloor \cdot y_1 \end{cases}\)

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

\((6).\)中国剩余定理\((CRT)\)

\(\begin{cases} x\equiv a_1\pmod {m_1} \\ x\equiv a_2\pmod {m_2} \\ ......\\ x\equiv a_k\pmod {m_k} \end{cases}\)一定存在\(x\)使上述方程组成立,且在模\(m_1\times m_2\cdots \times m_k\)的意义下唯一

\((7).\) 欧拉函数

(i).定义:\(n\)的缩系中元素的个数,或如下

\[\varphi(n)=\#\{k\in\mathbb Z^+\mid 1\le k\le n,\gcd(k,n)=1\} \]

(ii).性质:
\(.\)\(p\)为质数,则\(\varphi(p)=p-1\),且\(\forall k\in N_*,\varphi(p^k)=p^k-p^{k-1}\)
证明: 对于任意质数\(p\)\(\forall x<p,x\in N_*,gcd(p,x)=1(gcd(1,p)=1)\)所以有\(\varphi(p)=p-1\)
对于\(p^k\)\(p^k\)显然只有一个质因子\(p\)(由算术基本定理得),所以与\(p^k\)不互质的数有\(p,2p\dots p^k\)\(p^{k-1}\)个,所以

\[\varphi(p^k)=p^k-p^{k-1} \]

\(.\)\(gcd(a,b)=1\)\(\varphi(ab)=\varphi(a)\times\varphi(b)\)
证明:

\[引理1: 若x与ab互质,则x与a互质且x与b互质,反之亦然 \]

该引理的正确性显然

\[引理2:gcd(a,b)=1,则方程组\begin{cases} x\equiv \alpha \pmod a\\ x\equiv \beta \pmod b \\ \end{cases}的整数解在模ab意义下唯一且确定 \]

该引理即中国剩余定理的特殊形式
构造映射\(f(\alpha,\beta)\),表示在\(a\)的缩系中的元素\(\alpha\)\(b\)的缩系中元素\(\beta\)对应\(ab\)的缩系中的一个元素\(f(\alpha,\beta)\)
因为引理1,该元素\(f(\alpha,\beta)\)一定存在,因为引理2,该映射\(f\)是一个一一映射,所以得证

\(.\)计算公式:若\(n=\prod_{i=1}^k p_i^{\alpha_i}\)其中\(p_i\)为素数,则

\[\varphi(n)=n\times\prod_{i=1}^k(1-\frac1 {p_i}) \]

证明:\(\varphi(n)=n\times\prod_{i=1}^k(1-\frac1 {p_i})=\prod_{i=1}^kp_i^{\alpha_i-1}(p_i-1)\)显然有\(\forall p_1,p_2,k_1,k_2,gcd(p_1^{k_1},p_2^{k_2})=1\)
由性质2可得\(\varphi(n)=\prod_{i=1}^k\varphi(p_i^{\alpha_i})\)由性质1可得\(\varphi(n)=\prod_{i=1}^kp_i^{\alpha_i-1}(p_i-1)\)得证

\((8).\)欧拉定理

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

证明:\(k_1,k_2,\dots k_{\varphi(m)}\)\(m\)的一个缩系,由于\(gcd(a,m)=1\)
\(ak_1,ak_2\dots ak_{\varphi(m)}\)也为\(m\)的一个缩系,所以有

\[\prod_{i=1}^{\varphi(m)}ak_i\equiv\prod_{i=1}^{\varphi(m)}k_i \pmod m\rightarrow a^{\varphi(m)}\prod_{i=1}^{\varphi(m)}k_i\equiv \prod_{i=1}^{\varphi(m)}k_i \pmod m \]

因为\(gcd(\prod_{i=1}^{\varphi(m)} k_i,m)=1\),所以\(a^{\varphi(m)}\equiv 1 \pmod m\)
证毕

\((9).\) 扩展欧拉定理

\[a^b\equiv \begin{cases} {a^b}&\pmod m,b<\varphi(m)\\ a^{b\mod \varphi(m)+\varphi(m)}&\pmod m,b>\varphi(m)\\ \end{cases} \]

证明:

\[引理1.1:如果\forall i\le n,x\equiv k\pmod {p_i^{\alpha_i}}则x\equiv k\pmod{\prod_{i=1}^np_i^{\alpha_i}} \]

\[引理1.2: 如果gcd(a,b)=1,a\mid c,b\mid c\Rightarrow ab\mid c \]

引理\(1.2\)证明:
我们记两个集合\(A,B,C\)分别表示\(a,b,c\)的素因子集,则\(A\cap B=\varnothing,A,B\in C\Rightarrow A\cup B\in C\)所以\(a,b\)的所有素因子均为\(c\)的素因子且有\(c\)上每个素因子次数均大于\(a,b\)上的,自然也大于\(ab\)上的所以\(ab\mid c\)
引理\(1.1\)证明
我们显然有\(\forall i\le n,p_i^{\alpha_i}\mid(x-k)\)于是依据引理\(1.2\),\(\prod p_i^{\alpha_i}\mid (x-k)\Rightarrow x\equiv k\pmod{\prod_{i=1}^np_i^{\alpha_i}}\)
假设\(m=\prod p_i^{\alpha_i}\),依据引理\(1.1\)我们只需证\(\forall i,a^b\equiv a^{b\mod \varphi(m)+\varphi(m)}\pmod{p_i^{\alpha_i} }\)
\(Case1:gcd(a,p_i^{\alpha_i})=1\)
此时有\(a^{\varphi(p_i^{\alpha_i})}\equiv 1\pmod {p_i^{\alpha_i}}\)而且\(\varphi(p_i^{\alpha_i})\mid \varphi(m)\)(欧拉函数的积性)\(\Rightarrow a^{\varphi(m)}\equiv 1\pmod{p_i^{\alpha_i}}\)易证原式
\(Case2:\)此时有\(p_i\mid a,\Rightarrow a=kp_i\)依据欧拉函数的积性\(\varphi(m)\ge\varphi(p_i^{\alpha_i})=p_i^{\alpha_i}-p_i^{\alpha_i-1}\ge\alpha_i\)(求导可得)
所以我们有\(b>\varphi(m)\ge\varphi(p_i^{\alpha_i})\ge\alpha_i\)
\(\therefore a^b=k^bp_i^b\because b>\alpha_i\therefore p_i^{\alpha_i}\mid a^b\Rightarrow a^b\equiv 0\pmod {p_i^{\alpha_i}}\)
\(b\mod\varphi(m)+\varphi(m)\ge\varphi(p_i^{\alpha_i})>\alpha_i,a^{b\mod \varphi(p_i^{\alpha_i})+\varphi(p_i^{\alpha_i})}\equiv 0\pmod {p_i^{\alpha_i}}\)
原同余式得证
综上所述,\(\forall i\le n\)\(m=p_i^{\alpha_i}\)成立,依据中国剩余定理及算数基本定理,扩展欧拉定理成立
证毕

\(2.\)素数筛

\((1).\)目的:快速的筛出素数

\((2).O(n^2)\)筛素数

定义法筛素数

void prime(int x){
    bool flag=1;
    for(int i=2;i<n;i++) if(x%i==0) flag=0;
    if(flag) cout<<"Yes";
    else cout<<"No";
}

\((3).O(n\sqrt n)\)筛素数

假设\(x\)有因子\(u\)则必然存在\(t\)使得\(t|x\)\(u\times t=x\)所以\(min(u,t)\le \sqrt x\)复杂度被降低为\(O(n\sqrt n)\)

void prime(int x){
    bool flag=1;
    for(int i=2;i*i<=n;i++) if(x%i==0) flag=0;
    if(flag) cout<<"Yes";
    else cout<<"No";
}

\((4).\)埃氏筛

思想核心:素数的倍数是合数、
实现方式:引入数组\(notprime[i]\),当考虑新数\(x\) 时,若\(notprime[x]=0\)\(x\)为素数,后将\(x\)的所有倍数标记为合数
正确性证明:\(\forall x\in N,x=\ p_i^{\alpha_i}\)其中\(p_i\)为质数,\(\alpha_i\ge 0,\alpha_i \in N\)\(\forall\alpha_i\neq 0,p_i\le x\)所以如果\(x\)是合数,则它一定在之前被标记过,所以如果\(notprime[x]=0,x\)为质数

bool p[100000017]; int b[1000017],cnt;
void prime(int n){
	for(int i=2;i<=n;i++){
		if(!p[i]) cnt++,b[cnt]=i;
		for(int j=1;j<=cnt;j++){
		    if(i*b[j]>n) break;
		    p[i*b[j]]=1;
		    if(b[j]%i==0) break;
		}
	}
}

时间复杂度:\(O(n\ln\ln n)\)
证明:我们实际在将素数的所有倍数标记,对于任意素数\(p\)我们进行\(\frac n p\)次操作,所以时间复杂度为\(\sum \frac n p=n\sum \frac1 p\)依据梅滕斯第二定理,有\(\sum \frac 1 p=\ln \ln n+M+O(\frac 1 {\ln n})\)

\[\sum_{p \le n} \frac{n}{p} \sim n \ln\ln n \quad (n \to \infty) \]

\((5).\)线性筛

即使埃氏筛的时间复杂度已经被优化到\(\ln\ln n\)但在\(n\)极大时(如\(10^8\)),效率仍然低下,于是我们考虑优化,注意到埃氏筛的某一个数可能被多次标记,所以线性筛的原理就是使每一个数只被筛一遍
原理:每一个合数只被其最小质因子筛一遍

const int N=100000017;
bitset<N> p; int b[N],cnt;
void prime(int n){
	for(int i=2;i<=n;i++){
		if(!p[i])cnt++,b[cnt]=i;
		for(int j=1;j<=cnt;j++){
			if(i*b[j]>n) break;
			p[i*b[j]]=1;
			if(i%b[j]==0) break;
		}
	}
}

posted on 2026-06-29 14:57  Underthetwilight  阅读(10)  评论(0)    收藏  举报

导航