欧拉函数的性质及应用

欧拉函数定义:ϕ(i)=1~i中与i互质的数的个数。
欧拉函数的性质:
1.用中国剩余定理可以证明当a,b互质时,ϕ(ab)=ϕ(a)*ϕ(b),也就是欧拉函数满足积性函数的性质。
2.设p为一个质数,L为正整数,则ϕ(pL)=pL-pL1
证明:∵p为质数,∴1~pL中与pL互质的数为不含p这个因子的数,也就是pL-含p这个因子的数的个数即为答案,那么1~pL中含p这个因子的数的个数即为pL1,∴ϕ(pL)=pL-pL1
由此可得,ϕ(i)=nsi=111pi
其中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=pkw,其中w与p互质,则i=pk+1*w,ϕ(i)=ϕ(pk+1)ϕ(w)=(pk+1-pk)ϕ(w)=pϕ(pk)ϕ(w)=pϕ(y)
于是在线性筛中我们可以求出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(Nlog2N),空间复杂度: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=111pi来求,整理得N!si=111pi,N!可以预处理,si=111pi可以预处理,之后就O(1)回答每个问题即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值