欧拉函数

定义

对正整数n,欧拉函数是小于或等于n的正整数中与n互质的数的数目
当然除了1以外其他正整数都不会与自身互质。

\(\{1,2,\cdots,m-1,m\}\)中有多少个整数与m互素。这个量用\(\psi(m)\)表示,函数\(\psi\)称为欧拉函数。

容易得到\(\psi(1)=1\)\(\psi(p)=p-1\)(p为素数),且所有合数m均有\(\psi(m)<m-1\)

如果m是一个素数幂\(p^k\),则\(\psi(p^k)=p^k-p^{k-1}\)

首先有\(n\perp p^k\Leftrightarrow p\nmid n\)(p不整除n),
\(\{1,2,\cdots,p^k-1\}\)中的p的倍数是\(\{p,2p,\cdots,p^k-p,p^k\}\),一共\(p^{k-1}\)个,
剩下的就是与\(p^k\)互素的。
注意当k=1是有\(\psi(p)=p-1\)

如果m>1不是素数幂,我们可以写成\(m=m_1m_2\),其中\(m_1\perp m_2\),那么我们可以得到\(n\perp m\Leftrightarrow (n\ mod\ m_1)\perp m_1\)\((n\ mod\ m_2)\perp m_2\)

\(\because m=m_1m_2,n\perp m\)
\(\therefore n\perp m_1,n\perp m_2\)
\(gcd(n,m_1)=gcd(n\ mod\ m_1,m_1)=1\)\((n\ mod\ m_1)\perp m_1\)

这就意味着与m互素的数必定与\(m_1\)\(m_2\)互素(好像是废话哎)

先来看下仅有两个模3和4的剩余系

n mod 12 n mod 3 n mod 4
0 0 0
1 1 1
2 2 2
3 0 3
4 1 0
5 2 1
6 0 2
7 1 3
8 2 0
9 0 1
10 1 2
11 2 3

以12为例,我们有\(\psi(12)=\psi(3)\psi(4)\)
因为n与12互素当且仅当n mod 4=1或3(即n与4互素)且n mod 3=1或2(n与3互素),
在上面的表中也可以看出与3互质的数有两个(1,2),与4互质的数有2个(1,3),他们有四种组合。
那么与12互素的值有(1,1),(2,1),(1,3),(2,3)(已经在上面的表中用黄黄的东西标出)

如果\(f(1)=1\),且\(f(m_1m_2)=f(m_1)f(m_2)只要m_1\perp m_2\)
那么正整数的函数f(m)称为是积性的,我们刚才证明了\(\psi\)(m)是积性的。

那么我们不难得出
\(\psi(m)=\underset{p|m}\Pi(p^{m_p}-p^{m_p-1})=m\underset{p|m}\Pi(1-\frac{1}{p})\)

这里有\(m=\underset{p}\Pi p^{m_p}\),上面式子的右边对于每个因式提一个\(p^{m_p}\)即可

例如:\(\psi(12)=(4-2)(3-1)=12(1-\frac{1}{2})(1-\frac{1}{3})\)

代码
在分解质因数的同时求解

int _phi(int n)
{
    int ans=n;
    for(int i=2;i*i<=n;i++)
        if(n%i==0)
        {
            ans=ans/i*(i-1);
            while(n%i==0)n/=i;
        }
    if(n>1)ans=ans/n*(n-1);
    return ans;
}
posted @ 2022-02-19 19:54  何太狼  阅读(213)  评论(0编辑  收藏  举报