欧拉函数与欧拉定理

欧拉函数

定义

ϕ(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)=xi=1m(1pi1)

其中 pip_{i}pixxx 的质因子,且两两不同


证明:

  • ϕ(1)=1ϕ(1) =1ϕ(1)=1
  • xxx 是素数,则 ϕ(x)=x−1ϕ(x)=x-1ϕ(x)=x1
  • 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)=pk1(p1)=pkpk1=pk(1p1)
  • a,ba,bab 互质,则 ϕ(a∗b)=ϕ(a)∗ϕ(b)ϕ(a*b)=ϕ(a)*ϕ(b)ϕ(ab)=ϕ(a)ϕ(b)
    • 这条结论的证明需要用到中国剩余定理,如果aaap1p1p1互质(a<p1)(a<p1)(a<p1)bbbp2p2p2互质(b<p2)(b<p2)(b<p2)cccp1,p2p1,p2p1,p2互质(c<p1∗p2)(c<p1*p2)(c<p1p2),则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)ϕ(p1p2)种可能,所以ϕ(p1∗p2)ϕ(p1*p2)ϕ(p1p2)就等于ϕ(p1)ϕ(p2)ϕ(p1)ϕ(p2)ϕ(p1)ϕ(p2)

x=p1a1∗p2a2∗...∗pkakx =p {_{1}}^{a_{1}}*p {_{2}}^{a_{2}}*...*p {_{k}}^{a_{k}}x=p1a1p2a2...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)=p1a1p2a2...pkak((1p11))((1p21))...((1pk1))

ϕ(x)=x∗∏i=1m(1−1pi)ϕ(x)=x*\prod_{i=1}^{m}(1-\frac{1}{p_{i}})ϕ(x)=xi=1m(1pi1)

参考博客:https://blog.youkuaiyun.com/wrwhahah/article/details/82704053


求解

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

  1. 暴力枚举质因子,时间复杂度: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;
}
  1. 类似素数塞,时间复杂度: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%max%ϕ(m)%ma,max%mx<ϕ(m),gcd(a,m)!=1ax%ϕ(m)+ϕ(m)%mx>=ϕ(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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值