欧拉函数定义:
ϕ
(i)=1~i中与i互质的数的个数。
欧拉函数的性质:
1.用中国剩余定理可以证明当a,b互质时,
ϕ(ab)
=
ϕ(a)
*
ϕ(b)
,也就是欧拉函数满足积性函数的性质。
2.设p为一个质数,L为正整数,则
ϕ(pL)
=
pL
-
pL−1
证明:∵p为质数,∴1~
pL
中与
pL
互质的数为不含p这个因子的数,也就是
pL
-含p这个因子的数的个数即为答案,那么1~
pL
中含p这个因子的数的个数即为
pL−1
,∴
ϕ(pL)
=
pL
-
pL−1
由此可得,
ϕ(i)
=n
∏si=11−1pi
其中n=
∑si=1ptii
但该做法的复杂度为O(nlogn),我们可以做的更快。
显然
ϕ(i)
=i-1(i为质数)。
当i为合数时,设y*p=i,p是质数。若y%p!=0,则y和p互质,
ϕ(i)
=
ϕ(y)
ϕ(p)
,即
ϕ(i)
=
ϕ(y)
(p-1)
若y%p==0,则令y=
pk
w,其中w与p互质,则i=
pk+1
*w,
ϕ(i)
=
ϕ(pk+1)
ϕ(w)
=(
pk+1
-
pk
)
ϕ(w)
=
p
于是在线性筛中我们可以求出1~n中所有的欧拉函数。
欧拉函数的应用:
BZOJ2705
题目大意:给定一个整数N,你需要求出
∑Ni=1gcd(i,N)
。
题解:
枚举gcd(i,N)等于多少我们可以O(2*
N√
)枚举所有的gcd(i,N),设其为d,显然一个d的贡献为d*
ϕ(N/d)
,于是我们只要求出每个d和N/d对应的phi即可,时间复杂度:O(
N√
log2N
),空间复杂度:O(1)
BZOJ2818
题目大意:给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对.
题解:与上一题差不多,我们枚举每一个d,d为素数,则gcd(x,y)=1(1<=x,y<=N/d)的数的个数之和即为答案
而gcd(x,y)=1(1<=x,y<=N/d)的数的个数之和即为
∑N/di=1ϕ(i)
*2-1
BZOJ2190
题目大意:一个n*n的矩阵,一个人站在(1,1),求他能看到的总人数(斜率相同的只能看到一个人)
题解:
若将该人放到(0,0),显然除了(0,1)和(1,0)能被看到以外,只有坐标为(x,y),gcd(x,y)=1的人才能被看到。
证明:若gcd(x,y)≠0,则(x/gcd(x,y),y/gcd(x,y))已经被看到了,且这两人在同一斜率的直线上。
于是就跟上面的解法相同了。
BZOJ2186
题目大意:求1~N!中与M!互质的数的个数(M<=N,N<=1e7)。
题解:
∵gcd(x,y)=gcd(x+y,y),∴当gcd(x,M!)=1时,gcd(x+M!,M!)=1,∴1~N!中有
M!N!
ϕ(M!)
个与M!互质的数,
ϕ(M!)
可以用
ϕ(M!)
=M!
∏si=11−1pi
来求,整理得N!
∏si=11−1pi
,N!可以预处理,
∏si=11−1pi
可以预处理,之后就O(1)回答每个问题即可。
欧拉函数的性质及应用
最新推荐文章于 2023-01-12 10:01:32 发布