欧拉函数

欧拉函数的定义

欧拉函数,即 \(\varphi(n)\),表示 \(1\sim n\)\(n\) 互质的数的个数。

特别的,\(\varphi(1)=1\)

\(n\) 为质数时,显然有 \(\varphi(n)=n-1\)

积性函数

积性函数的定义:对于任意满足 \(\gcd(a,b)=1\)\(a\)\(b\),如果满足 \(f(ab)=f(a)\times f(b)\),则称 \(f\) 函数为积性函数。

欧拉函数是积性函数。证明如下:

对于两个互质的数的乘积 \(n\),必然可以表示为 \(n=q^ap^b\)\(p\)\(q\) 为质数)。

我们用 \(g(x,y)\) 表示 \(\le x\) 的数中 \(y\) 的的倍数的个数,则有 \(g(n,p)=p^{a-1}q^b\)\(g(n,q)=p^aq^{b-1}\)\(g(n,pq)=p^{a-1}q^{b-1}\)

由容斥原理得 \(n=g(n,p)+g(n,q)-g(n,qp)+\varphi(n)\)

\[\begin{aligned} {}\varphi(n)=&n-g(n,p)-g(n,q)+g(n,qp)\\ =&p^aq^b-p^{a-1}q^b-p^aq^{b-1}-p^{a-1}q^{b-1}&\\ =&(p^a-p^{a-1})\times(q^b-q^{b-1})&\\ =&\varphi(p^a)\times\varphi(p^b) \end{aligned} \]

得证欧拉函数为积性函数。

欧拉函数的求值

对于 \(n={p_1}^{k_1}{p_2}^{k_2}\cdots {p_r}^{k_r}\),由积性函数的性质我们可以得到:

\[\begin{aligned} {}\varphi(n)=&\varphi({p_1}^{k_1})\times\varphi({p_2}^{k_2})\times\cdots\times\varphi({p_r}^{k_r})\\ =&(p_1-1)\times {p_1}^{k_1-1}\times(p_2-1)\times{p_2}^{k_2-1}\times\cdots\times(p_r-1)\times{p_r}^{k_r-1}&\\ =&(p_1-1)\div p_1\times p_1^{k_1}\times(p_2-1)\div p_2\times p_2^{k_2}\times\cdots\times(p_r-1)\div p_r\times p_r^{k_r}&\\ =&n\times(p_1-1)\div p_1\times(p_2-1)\div p_2\times\cdots\times (p_r-1)\div p_r&\\ =&n\times(1-\frac{1}{p_1})\times(1-\frac{1}{p_2})\times\cdots\times(1-\frac{1}{p_r}) \end{aligned} \]

一些性质&定理

性质 1

\(n\) 是一个大于 \(2\) 的正整数,则所有与 \(n\) 互质的数的和为 \(\varphi(n)\div2\times n\)\(\varphi(n)\) 为偶数。

性质 2

\(\sum_{d|n}\varphi(d)=n\)

欧拉定理

如果两个整数 \(a\)\(b\) 互质,那么 \(a^{\varphi(b)}\equiv1(mod\ n)\)

费马小定理

如果 \(p\) 是一个质数,且 \(a\) 不是 \(p\) 的倍数,那么 \(a^{p-1}\equiv1(mod\ p)\)

线性筛求欧拉函数

时间复杂度在 \(O(n)\) 左右。

phi[1]=1;
for(int i=2;i<=n;i++)
{
    if(!flag[i])
    {
        phi[i]=i-1;
        p[++k]=i;
    }
    for(int j=1;p[j]*i<=n;j++)
    {
        flag[p[j]*i]=true;
        if(i%p[j]==0)
        {
            phi[i*p[j]]=phi[i]*p[j];
            break;
        } 
        else phi[i*p[j]]=phi[i]*(p[j]-1);
    }
}
posted @ 2024-07-24 11:39  MinimumSpanningTree  阅读(38)  评论(0)    收藏  举报