欧拉函数的性质及应用

5 篇文章 0 订阅
1 篇文章 0 订阅

欧拉函数定义: ϕ (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) =n si=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= pk w,其中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( 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=111pi 来求,整理得N! si=111pi ,N!可以预处理, si=111pi 可以预处理,之后就O(1)回答每个问题即可。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值