欧拉函数
定义
ϕ(x)ϕ(x)ϕ(x) 表示从1,2,3,...,x1,2,3,...,x1,2,3,...,x 中和 xxx 互质的数的数量
公式
ϕ(x)=x∗∏i=1m(1−1pi)ϕ(x)=x*\prod_{i=1}^{m}(1-\frac{1}{p_{i}})ϕ(x)=x∗∏i=1m(1−pi1)
其中 pip_{i}pi 是 xxx 的质因子,且两两不同
证明:
- ϕ(1)=1ϕ(1) =1ϕ(1)=1
- 若 xxx 是素数,则 ϕ(x)=x−1ϕ(x)=x-1ϕ(x)=x−1
- 若 ppp是素数,则 ϕ(pk)=pk−1∗(p−1)=pk−pk−1=pk∗(1−1p)ϕ(p^{k})=p^{k-1}*(p-1)=p^{k}-p^{k-1}=p^{k}*(1-\frac{1}{p})ϕ(pk)=pk−1∗(p−1)=pk−pk−1=pk∗(1−p1)
- 若 a,ba,ba,b 互质,则 ϕ(a∗b)=ϕ(a)∗ϕ(b)ϕ(a*b)=ϕ(a)*ϕ(b)ϕ(a∗b)=ϕ(a)∗ϕ(b)
- 这条结论的证明需要用到中国剩余定理,如果aaa与p1p1p1互质(a<p1)(a<p1)(a<p1),bbb与p2p2p2互质(b<p2)(b<p2)(b<p2),ccc与p1,p2p1,p2p1,p2互质(c<p1∗p2)(c<p1*p2)(c<p1∗p2),则c与数对(a,b)(a,b)(a,b) 是一 一对应关系。由于a的值有ϕ(p1)ϕ(p1)ϕ(p1)种可能,b的值有ϕ(p2)ϕ(p2)ϕ(p2)种可能,则数对 (a,b)(a,b)(a,b) 有ϕ(p1)∗ϕ(p2)ϕ(p1)*ϕ(p2)ϕ(p1)∗ϕ(p2)种可能,而c的值有ϕ(p1∗p2)ϕ(p1*p2)ϕ(p1∗p2)种可能,所以ϕ(p1∗p2)ϕ(p1*p2)ϕ(p1∗p2)就等于ϕ(p1)ϕ(p2)ϕ(p1)ϕ(p2)ϕ(p1)ϕ(p2)。
设 x=p1a1∗p2a2∗...∗pkakx =p {_{1}}^{a_{1}}*p {_{2}}^{a_{2}}*...*p {_{k}}^{a_{k}}x=p1a1∗p2a2∗...∗pkak
由上述结论,可得
ϕ(x)=ϕ(p1a1)∗ϕ(p2a2)∗...∗ϕ(pkak)ϕ(x)=ϕ(p {_{1}}^{a_{1}})*ϕ(p {_{2}}^{a_{2}})*...*ϕ(p {_{k}}^{a_{k}})ϕ(x)=ϕ(p1a1)∗ϕ(p2a2)∗...∗ϕ(pkak)
ϕ(x)=p1a1∗p2a2∗...∗pkak∗((1−1p1))∗((1−1p2))∗...∗((1−1pk))ϕ(x)=p {_{1}}^{a_{1}}*p {_{2}}^{a_{2}}*...*p {_{k}}^{a_{k}}*((1-\frac{1}{p_{1}}))*((1-\frac{1}{p_{2}}))*...*((1-\frac{1}{p_{k}}))ϕ(x)=p1a1∗p2a2∗...∗pkak∗((1−p11))∗((1−p21))∗...∗((1−pk1))
ϕ(x)=x∗∏i=1m(1−1pi)ϕ(x)=x*\prod_{i=1}^{m}(1-\frac{1}{p_{i}})ϕ(x)=x∗∏i=1m(1−pi1)
参考博客:https://blog.youkuaiyun.com/wrwhahah/article/details/82704053
求解
从这个公式可以得到两个得到 ϕ(x)ϕ(x)ϕ(x)的方法
- 暴力枚举质因子,时间复杂度:O(xO( \sqrt{x}O(x )))
int phi(int x){
int sum=x;
for(int i=2;i*i<=x;i++)
{
if(x%i)
continue;
sum=sum/i*(i-1);
while(x%i==0)
x/=i;
}
if(x!=1)
sum=sum/x*(x-1);
return sum;
}
- 类似素数塞,时间复杂度:O(n)O( n )O(n)
const int N=1e6+6;
int P[N];
bool Notprime[N]; //不是素数为true
int phi(int MAXN){ //得到1--MAXN所有数的欧拉函数值
for(int i=1;i<=MAXN;i++)
P[i]=i;
for(int i=2;i<=MAXN;i++)
if(!Notprime[i])
for(int j=i+i;j<=MAXN;j+=i)
{
Notprime[j]=true;
P[j]=P[j]/i*(i-1);
}
}
欧拉定理与扩展欧拉定理
公式
ax%m≡{ax%ϕ(m)%m,a,m互质ax%m,x<ϕ(m),gcd(a,m)!=1a(x%ϕ(m))+ϕ(m)%m,x>=ϕ(m),gcd(a,m)!=1a^{x} \% m\equiv\left\{\begin{matrix}
& a^{x\%ϕ(m)} \%m ,a,m互质
\\& a^{x}\%m , x<ϕ(m),gcd(a,m)!=1
\\& a^{(x\%ϕ(m))+ϕ(m)}\%m,x>=ϕ(m),gcd(a,m)!=1\end{matrix}\right.ax%m≡⎩⎨⎧ax%ϕ(m)%m,a,m互质ax%m,x<ϕ(m),gcd(a,m)!=1a(x%ϕ(m))+ϕ(m)%m,x>=ϕ(m),gcd(a,m)!=1
证明:
参考博客:https://blog.youkuaiyun.com/hzj1054689699/article/details/80693756
练习题目:
http://acm.fzu.edu.cn/problem.php?pid=1759
https://www.lydsy.com/JudgeOnline/problem.php?id=3884
http://acm.hdu.edu.cn/showproblem.php?pid=1395
http://acm.hdu.edu.cn/showproblem.php?pid=6363