欧拉函数 简单题
本文搬运自本人高中时期CSDN博客,若图片加载不出来,可到原文查看:https://blog.csdn.net/zhangtingxiqwq/article/details/142256434
φ(n) 表示 n 以内和 n 互质的数的个数
-
若 n 为质数 φ(n)=n−1
-
φ(pk)=pk−pk−1=pk(p−1)
-
φ(n) 为积性函数,也就是若 a,b 互质,则 φ(ab)=φ(a)φ(b)
-
∑d∣nφ(d)=n
-
欧拉定理:若 a,m(m≥2) 互质, aφ(m)≡1(modm)
-
费马小定理:欧拉定理特殊形式,在 m 为质数时, am−1≡1(modm)
T1

设 f(n) 为 n 的因数个数,答案就是 n−φ(n)−f(n)+1
加1时因为1被算了2次
T2

考虑一个位置被看到,则有 gcd(x,y)=1 。对于一个定的 y ,合法 x 数就是 φ(y)
T3


易发现一个数如果含有一个因子属于 [2,m] ,则不合法。而且我们可以缩小范围,不能包含 [2,m] 内的质因子,设为 {p} 。
类比欧拉函数计算公式,答案即为 n!∏i=1n(1−pi1)
T4


容易发现我们把一个 a ,当成两个 p1,p2 的 a 来计算,是不影响的。
然后根据欧拉函数的积性,我们把所有质数分开来算是不影响的,现在等价于求 ∑i1∣pc1∑i2∣pc2∑i3∣pc3…φ(∏i)
显然,只要里面那个prod非0,那么其实就等价于他们的积成 pp−1 ,因此相互之间独立,直接乘起来即可
答案即为:
p∏(p(p−1)(∏i∑j=0ipi−1)+1)
拓展欧拉定理
ab≡abmodφ(p)+φ(p)(modp)
其中,若 a,p 互质,则
ab≡abmodφ(p)
(这个直接用欧拉定理就可以证明了)
我们发现对于 bmodφ(p) 的样子,一定形如一种混循环:

如果我们不加 φ(p) ,我们就可能无法进入的循环里,所以我们要多加一个 φ(p) 来保证进入圈内从而保证正确性。
需要注意的是,在 b<φ(p) 时,我们指数项不应该加上 φ(p) ,以下是一组反例 a=2,p=4,b=1 。
T5

不妨设 rp=2222…modp ,根据扩展欧拉定理有:
rp≡22222…modφ(p)+φ(p)(modp)
rp≡22φ(p)+φ(p)(modp)
递归解决即可