欧拉函数
Ψ(n) 表示不小于n的自然数中,与n互质的数的个数
若一个整数N可以表示为:
N=p1α1p2α2...pnαn
N=p_{1}^{α_{1}}p_{2}^{α_{2}}...p_{n}^{α_{n}}
N=p1α1p2α2...pnαn
则有欧拉函数;
Ψ(n)=N(1−1p1)(1−1p2)...(1−1pn)
Ψ(n) =N(1- \frac{1}{p_{1}})(1- \frac{1}{p_{2}})...(1- \frac{1}{p_{n}})
Ψ(n)=N(1−p11)(1−p21)...(1−pn1)
证明方法:
1.在1−N中的所有数,筛去p1,p2...Pm的所有倍数
1.在1-N中的所有数,筛去p1,p2...P_{m}的所有倍数
1.在1−N中的所有数,筛去p1,p2...Pm的所有倍数
2.加上所有pi⋅pj的倍数,减去所有pi⋅pj⋅pk的倍数... 2.加上所有p_{i}\cdot p_{j}的倍数,减去所有p_{i}\cdot p_{j} \cdot p_{k}的倍数... 2.加上所有pi⋅pj的倍数,减去所有pi⋅pj⋅pk的倍数...
3.化简得Ψ(n)=N(1−1p1)(1−1p2)...(1−1pn) 3.化简得Ψ(n) =N(1- \frac{1}{p_{1}})(1- \frac{1}{p_{2}})...(1- \frac{1}{p_{n}}) 3.化简得Ψ(n)=N(1−p11)(1−p21)...(1−pn1)
欧拉定理
若a与n互质,则有 aΨ(n)≡1(mod n) 若a与n互质,则有\ a^{Ψ(n)} \equiv 1(mod\ n) 若a与n互质,则有 aΨ(n)≡1(mod n)
证明如下:
由欧拉函数得到得Ψ(n)个数a1a2...aΨ(n)≡1(mod n)
由欧拉函数得到得Ψ(n)个数
a_{1}a_{2}...a_{Ψ(n)}\equiv 1(mod\ n)
由欧拉函数得到得Ψ(n)个数a1a2...aΨ(n)≡1(mod n)
则a1到an皆有a∗a1≡1(mod n)...a∗aΨ(n)≡1(mod n) 则a_{1}到a_{n}皆有a*a_{1}\equiv 1(mod\ n)...a*a_{Ψ(n)}\equiv1(mod \ n) 则a1到an皆有a∗a1≡1(mod n)...a∗aΨ(n)≡1(mod n)
以上两式关于n同余,因此消去1a2...aΨ(n)得到:aΨ(n)≡1(mod n) 以上两式关于n同余,因此消去_{1}a_{2}...a_{Ψ(n)}得到:a^{Ψ(n)}\equiv 1(mod \ n) 以上两式关于n同余,因此消去1a2...aΨ(n)得到:aΨ(n)≡1(mod n)
由此我们可以由此推导出费马小定理
当n为质数的时候,Ψ(n)=n−1,因此有an−1≡1(mod n) 当n为质数的时候,Ψ(n)=n-1,因此有 a^{n-1} \equiv 1(mod \ n) 当n为质数的时候,Ψ(n)=n−1,因此有an−1≡1(mod n)
逆元
逆元的定义:
若整数b,m互质.对于整数a若满足ab≡a⋅x(mod m)
若整数b,m互质.对于整数a若满足\frac{a}{b}\equiv a\cdot x(mod\ m)
若整数b,m互质.对于整数a若满足ba≡a⋅x(mod m)
则称x为b mod m的乘法逆元,记作:
ab≡a⋅b−1(mod m)
\frac{a}{b} \equiv a\cdot b^{-1} (mod\ m)
ba≡a⋅b−1(mod m)
因此b的逆元x对于b有如下关系:
b⋅x≡1(mod m)
b\cdot x \equiv 1(mod\ m)
b⋅x≡1(mod m)
由费马小定理,当m为质数的时候,有:
b⋅bm−2≡bm−1≡1(mod m)
b\cdot b^{m-2} \equiv b^{m-1} \equiv 1(mod\ m)
b⋅bm−2≡bm−1≡1(mod m)
因此此时,bm−2便是b关于m的一个逆元 因此此时,b^{m-2}便是b关于m的一个逆元 因此此时,bm−2便是b关于m的一个逆元
扩展欧几里得算法
裴蜀定理
对于任意正整数a,b,那么一定存在非零整数x,y使得 ax+by = gcd(a,b)
若ax+by=d,则d为a和b的最大公约数的倍数
证明方法:使用扩展欧几里得进行构造
对于求解ax+by=d,经过迭代可以得到by+(a mod b)x=d
对于求解ax+by=d,经过迭代可以得到by+(a \ mod\ b)x=d
对于求解ax+by=d,经过迭代可以得到by+(a mod b)x=d
整理得到 ax+b(y−[ab]x)=d 整理得到\ ax+b(y-[\frac{a}{b}]x)=d 整理得到 ax+b(y−[ba]x)=d
因此构造出来的 x=x, y=y−[ab] 因此构造出来的\ x=x ,\ y=y-[\frac{a}{b}] 因此构造出来的 x=x, y=y−[ba]
代码如下
int exgcd(int a,int b,int &x,int &y){
if(!b){
x=1,y=0;
return a;
}
int d=exgcd(b,a%b,y,x);
y-=a/b*x;
return d;
}
中国剩余定理
m1,m2...mk两两互质,求解方程组 m_{1},m_{2}...m_{k}两两互质,求解方程组 m1,m2...mk两两互质,求解方程组
x≡a1(mod m) x\equiv a_{1} (mod\ m) x≡a1(mod m)
x≡a2(mod m) x\equiv a_{2} (mod\ m) x≡a2(mod m)
... ... ...
x≡ak(mod m) x\equiv a_{k} (mod\ m) x≡ak(mod m)
求解过程:
令M=m1m2...mk
令M=m_{1}m_{2}...m_{k}
令M=m1m2...mk
Mi=M/mi M_{i}=M/m_{i} Mi=M/mi
Mi−1表示Mi modmi 的逆 M_{i}^{-1}表示M_{i}\ mod m_{i} \ 的逆 Mi−1表示Mi modmi 的逆
则通解为:
x=a1M1M1−1 +... + akMkMk−1
x=a_{1}M_{1}M_{1}^{-1}\ + ...\ +\ a_{k}M_{k}M_{k}^{-1}
x=a1M1M1−1 +... + akMkMk−1
因此我们可以使用扩展欧几里得求Mi的逆元,从而求解问题 因此我们可以使用扩展欧几里得求M_{i}的逆元,从而求解问题 因此我们可以使用扩展欧几里得求Mi的逆元,从而求解问题