关于欧拉筛求phi的讨论

来源:互联网 发布:origin8.5软件下载 编辑:程序博客网 时间:2024/05/16 14:53

对于任意正整数i,我们将其所有的质数(p)倍筛去。
如果当前的p已经是i的约数,那么之后的数 p*i中, p一定不是p*i的最小质因子。
每个合数只会被其最小质因子筛去一次,所以时间复杂度为O(N)。

i为质数:ϕ(i)=i1

i的最小质因子指数为1:根据ϕ(ab)=ϕ(a)ϕ(b)(a,b)可知,ϕ(ip)=ϕ(i)ϕ(p)

i的最小质因子指数大于1(即当前pip的最小质因子,且p整除i):ϕ(ip)=ϕ(i)p,下面给出证明。

已知p|i,且p为质数,求证ϕ(ip)=ϕ(i)p
证明:
因为p|i,则令m=i/p,即i=mp
ϕ(ip)=ϕ(mp2),且mp互质
所以ϕ(mp2)=ϕ(m)ϕ(p2)=ϕ(m)(p1)p
又因p为质数,ϕ(m)(p1)p=ϕ(m)ϕ(p)p=ϕ(mp)p
ϕ(ip)=ϕ(i)p,证毕。

每个数只会被它的最小质因子筛一次,时间复杂度为O(n)

0 0
原创粉丝点击