欧拉函数的表示含义:
表示求小于n的正整数中与n互质的数的个数。
欧拉函数的求法:
性质:
(1) 若n为素数,则φ(n) = n - 1
显然,由于n为素数,1~n-1与n都只有公因子1,因此φ(n) = n - 1。
(2) 若n = p^k,p为素数(即n为单个素数的整数幂),则φ(n) = (p-1)*p^(k-1)
因为n是p的整数幂,因此所有p的倍数和n都不互质。小于n的p的倍数一共有p^(k-1)-1个,因此和n互质的个数为:
p^k-1- (p^(k-1)-1) = p^k - p^(k-1) = (p-1)*p^(k-1)
(3)若p和q互质,则φ(p*q)= φ(p) * φ(q)
例如:φ(55)=φ(11*5)= φ(11) * φ(5)=(11-1)*(5-1)=40
由以上性质,可以推出以下定理:
(1) 若p为n的约数,则φ(n*p) = φ(n) * p
若p为n的约数,且p为质数。则我们可以将n表示为p^k*m。m表示其他和p不同的质数的乘积。
显然有p^k与m互质,则:
φ(n)
= φ(p^k)*φ(m) = (p-1)*p^(k-1)*φ(m)
φ(n*p)
= φ(p^(k+1))*φ(m) = (p-1)*p^k*φ(m) = (p-1)*p^(k-1)*φ(m) * p =
φ(n) * p
(2) 若p为不为n的约数,则φ(n*p) = φ(n) * (p-1)
由p不为n的约数,因此p与n互质,所以φ(n*p) = φ(n) * φ(p) = φ(n)*(p-1)
有了这些定理,就可以用Eular筛法求出欧拉函数了。
因为每个素数都可以直接计算,每个合数都会被筛掉,所以每个数都会计算到。