[数论] 欧拉函数

参考资料 : 欧拉函数及欧拉线性筛 - 辞树 - CSDN博客

欧拉(Eular)函数 $\varphi $

欧拉函数是小于n的正整数中与n互质的数的数目(\(\varphi(1)=1\)

(互质:两数有且仅有公因数 $ 1 $)

$ $

$ $

欧拉函数 \(\varphi\) 的性质

1. 若\(n\)为质数,\(\varphi(n) = n-1\)

2. 对于 \(n = p^{k}\) ,有 \(\varphi(n) = (p-1)* p^{k-1}\)

3. 欧拉函数是积性函数,若\(gcd(n,m)=1\),即\(n\)\(m\)互质,有\(\varphi(n*m) = \varphi(n)*\varphi(m)\)

4. \(n = \sum_{i=1} ^{m} p_{i} ^{q_{i}}\) ,则\(\varphi (n) = n * \prod _{i=1} ^{m} (i - \frac{1}{p_{i}})\)

5. 欧拉定理:对于互质的\(a\)\(m\)\(a^{\varphi(m)} \equiv 1 (mod\) \(m)\)

6.小于\(n\)且与\(n\)互质的数的和:\(S = \frac {n * \varphi(n)}{2}\)

7. 对于质数\(p\),若\(n\) \(mod\) \(p=0\),则\(\varphi(n*p) = \varphi(n) * p\) ;若\(n\) \(mod\) \(p\neq 0\),则 \(\varphi(n*p) = \varphi(n) *(p-1)\)

8. 若\(\sum_{d|n}\varphi(d) = n\),则 \(\varphi(n) = \sum_{d|n} \mu(d) * \frac{n}{d}\)

显然后面几条我们用不上....反正先写着咯


于是有了欧拉筛求素数顺便(雾)求欧拉函数值的代码

void getprime(int lim)
{
    nop[1]=1,phi[1]=0;
    for(int i=2;i<=lim;i++)
    {
        if(!nop[i])pri[++size]=i,phi[i]=i-1;
        for(int j=1;j<=size&&i*pri[j]<=lim;j++)
        {
            nop[i*pri[j]]=1;
            if(i%pri[j]==0)
            {
                phi[i*pri[j]]=phi[i]*pri[j];
                break;
            }
            else phi[i*pri[j]]=phi[i]*(pri[j]-1);
        }
    }
}

说说几道题吧

[HAOI2012]外星人

题面:

艾莉欧在她的被子上发现了一个数字 N ,她觉得只要找出最小的 \(x\) 使得\(\varphi^{x}(N) =1\)
。根据这个 $x $她就能找到曾经绑架她的外星人的线索了。当然,她是不会去
算,请你帮助她算出最小的 \(x\)

扫描二维码关注公众号,回复: 6897464 查看本文章

输入:

第一行一个正整数$ test$,接下来 \(test\) 组数据每组数据第一行一个正整数$ m $,接下来
$m $行每行两个正整数 $q_{i} $ 和 \(p_{i}\)

其中\(\prod_{i=1}^{m}p_{i}^{q_{i}}\)\(N\) 的标准分解形式。

1
2
2 2
3 1

输出:

\(\color{#ccc}\text{ }\)
\(\color{#ccc}\text{ }\)
\(\color{#ccc}\text{ }\)
\(\color{#ccc}\text{ }\)每行一个整数\(ans\)

3

样例解释:

\(N=12 , \varphi(12)=4,\varphi(4)=2,\varphi(2)=1\),所以答案是3.

\(\varphi(\prod_{i=1}^{m}p_{i}^{q_{i}})=\prod_{i=1}^{m}(p_{i}-1)p_{i}^{q_{i}-1}\)

\(\color{#ccc}\text{ }\)
\(\color{#ccc}\text{ }\)

\(\color{#ccc}\text{ }\)
\(\color{#ccc}\text{ }\)

分析:

\(\color{#ccc}\text{ }\)
\(\color{#ccc}\text{ }\)
\(\color{#ccc}\text{ }\)
\(\color{#ccc}\text{ }\)其实题目求的是使得\(\varphi( \varphi... (\varphi (N)))=1\)\(\varphi\)操作的个数

通过打表 可以发现,只有\(\varphi(1)\)\(\varphi(2)\)的值为1,所以在最后一步前必然要把\(N\)转化为2(因为不能转为1啊,转1就两种方式),那么根据题目所提示之公式,

猜你喜欢

转载自www.cnblogs.com/lsy263/p/11266481.html