如何求欧拉函数?

欧拉函数的表示含义:

表示求小于n的正整数中与n互质的数的个数。

欧拉函数的求法:

性质:

(1) n为素数,则φ(n) = n - 1

显然,由于n为素数,1~n-1与n都只有公因子1,因此φ(n) = n - 1。

(2) n = p^kp为素数(即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)pq互质,则φ(p*q)= φ(p) * φ(q)
例如:φ(55)=φ(11*5)= φ(11) * φ(5)=(11-1)*(5-1)=40
由以上性质,可以推出以下定理:

(1) pn的约数,则φ(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筛法求出欧拉函数了。
因为每个素数都可以直接计算,每个合数都会被筛掉,所以每个数都会计算到。

 

posted @ 2021-07-28 16:20  Jaoany  阅读(1144)  评论(0编辑  收藏  举报