数论1
数论笔记
求\(\varphi(n)\)
普通求法:
首先将n唯一分解为$n=x_1{p_1}*x_2……*x_n^{p_n} $
\(\varphi(n)=n*(1-\frac1{x_1})*(1-\frac1{x_2})*……*(1-\frac1{x_n})\)
证明:
首先我们考虑在所有数中有\(\frac{1}{x}\)的概率会取到一个数是x的倍数,那么有\((1-\frac{1}{x})\)的概率会取到一个数不是x的倍数,1-n有n个数,我们要找到1-n所有与n互质的数,也就是去一个不是 \(n\) 的任意一个因数 \((x_1,x_2,x_3……x_n)\) 的倍数,就得到以上式子
线性求 \(\varphi(1)\) 到 \(\varphi(n)\) 的所有
首先我们先明白两个定理:
在 \(gcd(n,m)=1\) 条件下
定理1证明:
根据上述式子可以推导:
$n=x_1{p_1}*x_2……x_n^{p_n} \(
\)m=y_1{q_1}*y_2……y_n^{q_n} \(
\)nm=x_1{p_1}*x_2……x_n{p_n}*y_1*y_2{q_2}……*y_n $
\(\varphi(nm)=n*m*(1-\frac1{x_1})……*(1-\frac1{x_n})*(1-\frac1{y_1})……*(1-\frac1{y_n})=\varphi(n)*\varphi(m)~~~~~~~~~~~~gcd(n,m)=m\)
2.\(\varphi(n)=n-1~~~~~~~~~~~~~n\in prim\)
考虑感性理解,\(1-n\) 里面有 \(\varphi(n)\) 个与n互质,那么扩大 \(m\) 倍,相当于有 \(m\) 个 \(1-n\) 就直接乘(因为我们保证了 \(gcd(n,m)=m\) 也就是n是m的倍数,所以不存在乘上 \(m\) 后多出了不属于 \(n\) 的因子)
因此,我们可以来用质数筛的方法求 \(\varphi()\)
void op(int n){
for(int i=2;i<=n;i++){
if(!vis[i]){
prim[++tot]=i;
phi[i]=i-1;//引用定理2
}
for(int j=1;j<=tot&&i*prim[j]<=n;j++){
vis[prim[j]*i]=1;
if(i%prim[j]==0){
phi[i*prim[j]]=phi[i]*prim[j];
break;
}else{
phi[i*prim[j]]=phi[i]*(prim[j]-1);//因为prim[j]是质数,所以i与prim[j]一定互质
}
}
}
}
EXCRT
给你一些方程:
普通CRT比较有限制(因为要保证 \(p\) 为质数)
那么接下来我们来学习
扩展中国剩余定理
首先我们考虑我们已经得到了 \(1\sim i-1\) 个方程的特殊解 \(ans_{i-1}\)
令 \(M = lcm(a_1,a_2,...,a_{i-1})\)
那么通解就是 \(ans_{i-1} + k\times M~~~~~~k\in Z\)
\(\forall j\in[1,i-1]~~~ k\times M\equiv0\pmod{a_j}\)
得 \(ans_{i-1}+k\times M\equiv ans_{i-1}\pmod {a_j}\)
我们要找到一个 \(k\) 满足
先转化一下
用 exgcd 算一算 \(k\) 就好啦
那么可以得到
就可以递推啦
拓展欧拉定理
欧拉定理:
\(a^{\varphi(m)} \equiv1\pmod m~~~~~~~~~~~~~~~~~~~~(gcd(a,m)=1)\)
拓展欧拉定理:
这里没有a,m互质的要求
证明
首先我们唯一分解\(m=p_1^{q_1}p_2^{q_2}......p_n^{q_n}\)
现在我们只需要证明对于每个\(p_i^{q_i}都有\)
\(a^b\equiv a^{b~mod~\varphi(m)+\varphi(m)}\pmod {p_1^{q_1}}\)
因为
(x-y既是m1倍数也是m2倍数)
如果\(gcd(a,{p_i^{q_i}})=1\)
因为
总的来说:
证毕
如果\(gcd(a,p_i^{q_i})\ne 1\)
因为\(p_i\)为质数,所以一定有\(p_i|a\)
因为\(b\ge\varphi(m)\ge\varphi(p_i^{q_i})\ge{q_i}\)
综上所述
如何合并?
第一个式子,乘上一个\(\varphi(m)\)欧拉定理结果不变
第二个式子\(a^{\varphi(m)}\equiv0\pmod {p_i^{q_i}}\)随便乘上一些东西没什么关系
综上: