[数论]数论基础
\(1.\)基础数论
\((1).\) 带余除法
在小学三年级我们学习了带余除法,他的一般形式是
也就是\(x\times z+w=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).\)算数基本定理
其中\({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).\)裴蜀定理(贝祖定理)
证明: 考虑构造集合\(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\)的缩系中元素的个数,或如下
(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}\)个,所以
②\(.\)若\(gcd(a,b)=1\)则\(\varphi(ab)=\varphi(a)\times\varphi(b)\)
证明:
该引理的正确性显然
该引理即中国剩余定理的特殊形式
构造映射\(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})=\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).\)欧拉定理
证明: 设\(k_1,k_2,\dots k_{\varphi(m)}\)为\(m\)的一个缩系,由于\(gcd(a,m)=1\)
\(ak_1,ak_2\dots ak_{\varphi(m)}\)也为\(m\)的一个缩系,所以有
因为\(gcd(\prod_{i=1}^{\varphi(m)} k_i,m)=1\),所以\(a^{\varphi(m)}\equiv 1 \pmod m\)
证毕
\((9).\) 扩展欧拉定理
证明:
引理\(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})\)
\((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) 收藏 举报
浙公网安备 33010602011771号