对于任意正整数i,我们将其所有的质数(p)倍筛去。
如果当前的p已经是i的约数,那么之后的数 p*i中, p一定不是p*i的最小质因子。
每个合数只会被其最小质因子筛去一次,所以时间复杂度为O(N)。
若
i
为质数:
若
i
的最小质因子指数为1:根据
若
i
的最小质因子指数大于1(即当前
已知
p|i
,且
p
为质数,求证
证明:
因为
p|i
,则令
m=i/p
,即
i=mp
则
ϕ(i∗p)=ϕ(mp2)
,且
m
与
所以
ϕ(mp2)=ϕ(m)∗ϕ(p2)=ϕ(m)∗(p−1)p
又因
p
为质数,
即
ϕ(i∗p)=ϕ(i)∗p
,证毕。
每个数只会被它的最小质因子筛一次,时间复杂度为 O(n) 。