欧拉函数与欧拉定理

欧拉函数

定义

ϕ ( x ) ϕ(x) 表示从 1 , 2 , 3 , . . . , x 1,2,3,...,x 中和 x x 互质的数的数量


公式

ϕ ( x ) = x i = 1 m ( 1 1 p i ) ϕ(x)=x*\prod_{i=1}^{m}(1-\frac{1}{p_{i}})

其中 p i p_{i} x x 的质因子,且两两不同


证明:

  • ϕ ( 1 ) = 1 ϕ(1) =1
  • x x 是素数,则 ϕ ( x ) = x 1 ϕ(x)=x-1
  • p p 是素数,则 ϕ ( p k ) = p k 1 ( p 1 ) = p k p k 1 = p k ( 1 1 p ) ϕ(p^{k})=p^{k-1}*(p-1)=p^{k}-p^{k-1}=p^{k}*(1-\frac{1}{p})
  • a b a,b 互质,则 ϕ ( a b ) = ϕ ( a ) ϕ ( b ) ϕ(a*b)=ϕ(a)*ϕ(b)
    • 这条结论的证明需要用到中国剩余定理,如果 a a p 1 p1 互质 ( a < p 1 ) (a<p1) b b p 2 p2 互质 ( b < p 2 ) (b<p2) c c p 1 , p 2 p1,p2 互质 ( c < p 1 p 2 ) (c<p1*p2) ,则c与数对 ( a , b ) (a,b) 是一 一对应关系。由于a的值有 ϕ ( p 1 ) ϕ(p1) 种可能,b的值有 ϕ ( p 2 ) ϕ(p2) 种可能,则数对 ( a , b ) (a,b) ϕ ( p 1 ) ϕ ( p 2 ) ϕ(p1)*ϕ(p2) 种可能,而c的值有 ϕ ( p 1 p 2 ) ϕ(p1*p2) 种可能,所以 ϕ ( p 1 p 2 ) ϕ(p1*p2) 就等于 ϕ ( p 1 ) ϕ ( p 2 ) ϕ(p1)ϕ(p2)

x = p 1 a 1 p 2 a 2 . . . p k a k x =p {_{1}}^{a_{1}}*p {_{2}}^{a_{2}}*...*p {_{k}}^{a_{k}}

由上述结论,可得

ϕ ( x ) = ϕ ( p 1 a 1 ) ϕ ( p 2 a 2 ) . . . ϕ ( p k a k ) ϕ(x)=ϕ(p {_{1}}^{a_{1}})*ϕ(p {_{2}}^{a_{2}})*...*ϕ(p {_{k}}^{a_{k}})

ϕ ( x ) = p 1 a 1 p 2 a 2 . . . p k a k ( ( 1 1 p 1 ) ) ( ( 1 1 p 2 ) ) . . . ( ( 1 1 p k ) ) ϕ(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 ) = x i = 1 m ( 1 1 p i ) ϕ(x)=x*\prod_{i=1}^{m}(1-\frac{1}{p_{i}})

参考博客:https://blog.csdn.net/wrwhahah/article/details/82704053


求解

从这个公式可以得到两个得到 ϕ ( x ) ϕ(x) 的方法

  1. 暴力枚举质因子,时间复杂度: O ( x O( \sqrt{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;
}
  1. 类似素数塞,时间复杂度: 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);
            }
}

欧拉定理与扩展欧拉定理

公式

a x % m { a x % ϕ ( m ) % m x , m a x % m x &lt; ϕ ( m ) a x % ϕ ( m ) + ϕ ( m ) % m x &gt; = ϕ ( m ) a^{x} \% m\equiv\left\{\begin{matrix} &amp; a^{x\%ϕ(m)} \%m ,x,m互质 \\&amp; a^{x}\%m , x&lt;ϕ(m) \\&amp; a^{(x\%ϕ(m))+ϕ(m)}\%m,x&gt;=ϕ(m),\end{matrix}\right.


证明:

参考博客:https://blog.csdn.net/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

猜你喜欢

转载自blog.csdn.net/qq_40695203/article/details/89160922