欧拉函数总结

1.什么是欧拉函数

在数论中,对正整数n,欧拉函数是小于或等于n的正整数中与n 互质的数的数目。此函数以其首名研究者欧拉命名,它又称为φ函数(由高斯所命名)或是欧拉总计函数[1](totient function,由西尔维斯特所命名)。

例如,因为1,3,5,7均和8互质。

欧拉函数实际上是模n的同余类所构成的乘法(即环的所有单位元组成的乘法群)的。这个性质与拉格朗日定理一起构成了欧拉定理的证明。

总而言之,欧拉函数是小于x的整数中与x互质的数的个数,一般用φ(x)表示。特殊的,φ(1)=1。

2.欧拉函数公式以及证明

N=p1^a1*p2^a2.....pk^ak;//将N因式分解

欧拉函数公式:φ(n)=N*(1-1/p^1)*(1-1/p^2)....(1-1/p^k)

证明:

1.从1到N中去掉p1,p2.....pk的所有倍数。N-N/p1-N/p2-.....-N/pk。

2。由于一些数可能是pi*pj的倍数,所以加上所有pi*pj的倍数。N-N/p1-N/p2-.....-N/pk+N/p1p2+N/p2p3.....。

3.由于一些数可能是pi*pj*pz的倍数,经过上诉两步,相当于没有减去pi*pj*pz的倍数,所以减去所以pi*pj*pz的倍数。N-N/p1-N/p2-.....-N/pk+N/p1p2+N/p2p3.....-N/p1p2p3-N/p2p3p4-.....。

4,得出规律第四步操作为加上所以pi*pj*pz*px的所有倍数,最后将公式总结得出欧拉公式:φ(n)=N*(1-1/p^1)*(1-1/p^2)....(1-1/p^k)

3.欧拉函数的性质

① 当m,n互质时,有phi(m*n)= phi(m)*phi(n);

② 若i%p==0,有phi(i*p) = p * phi(i);

③ 对于互质x与p,有x^phi§≡1(mod p),因此x的逆元为x^(phi§-1),即欧拉定理。
(特别地,当p为质数时,phi(p)=p-1,此时逆元为x^(p-2),即费马小定理)

④ 当n为奇数时,phi(2n)=phi(n)

⑤ 若x与p互质,则p-x也与p互质,因此小于p且与p互质的数之和为phi(x)*x/2;

⑥N>1,不大于N且和N互素的所有正整数的和是 1/2 *N *eular(N)。

⑦若(N%a == 0 && (N/a)%a==0) 则有:E(N)=E(N/a)*a;

⑧若(N%a==0 && (N/a)%a!=0) 则有:E(N)=E(N/a)*(a-1);

4.线性筛法求欧拉函数

一些题目会要求我们求1到n的欧拉函数之和,例如AcWing 874 筛法求欧拉函数,这是我们在利用公式来求欧拉函数时就过于麻烦,我们可以利用筛法求欧拉函数。

线性筛法求欧拉函数模板:

ll get_eulers(int n)
{
    euler[1]=1;//1的欧拉函数为1
    for(int i=2;i<=n;i++)
    {
        if(!st[i])  //如果为质数
        {
            primes[cnt++]=i;
            euler[i]=i-1;
        }
        for(int j=0;primes[j]<=n / i;j++)
        {
            int t=primes[j]*i;
            st[t]=true;
            if(i % primes[j]==0) 
            {
                euler[t]=euler[i]*primes[j];
                break;
            }
            euler[t]=euler[i]*(primes[j]-1);

        }
    }
    ll res=0;
    for(int i=1;i<=n;i++)   res+=euler[i];
    return res;
}

//红色代码解释

质数i的欧拉函数即为phi[i] = i - 1:1 ~ i−1均与i互质,共i−1个。
phi[primes[j] * i]分为两种情况:
① i % primes[j] == 0时:primes[j]是i的最小质因子,也是primes[j] * i的最小质因子,因此1 - 1 / primes[j]这一项在phi[i]中计算过了,只需将基数NN修正为primes[j]倍,最终结果为phi[i] * primes[j]。
② i % primes[j] != 0:primes[j]不是i的质因子,只是primes[j] * i的最小质因子,因此不仅需要将基数N修正为primes[j]倍,还需要补上1 - 1 / primes[j]这一项,因此最终结果phi[i] * (primes[j] - 1)。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值