定义 φ(n) 为 [1,n] 中 与 n 互质的数的个数,即欧拉函数。
设 N=p1c1p2c2p3c3…pncn,也可写作 N=i=1∏npici。
则 φ(N)=N(1−1/p1)(1−1/p2)(1−1/p3)⋯(1−1/pn)。
容易发现,欧拉函数只和 N,p 有关。对于一个质数,φ(N)=N−1。
欧拉函数为积性函数,即对于互质的 A,B,有 φ(AB)=φ(A)φ(B)。
证明:
根据 N=p1c1p2c2p3c3…pncn。
φ(A)=A(1−1/p1)(1−1/p2)(1−1/p3)⋯(1−1/pa)。
φ(B)=B(1−1/p1)(1−1/p2)(1−1/p3)⋯(1−1/pb)。
A,B 互质,所以他们没有任何相等的 p。两者相乘可以直接得 φ(AB)。
随后我们可以在 O(N) 内求出 [1,N] 的欧拉函数。设 p 为质数,N=i=1∏npici,那么有以下性质:
-
φ(p)=p−1。
-
当 p∣N,p2∣N,有 φ(N)=φ(N/p)p。因为欧拉函数只和 N,p 有关,而 N,N/p 的 p 完全一样,不同只有 N 是 N/p 的 p 倍。
-
当 p∣N,p2∤N,有 φ(N)=φ(N/p)(n−1)。因为 N/p,p 互质,所以 φ(N)=φ(N/p)φ(p)。因为 p 是质数,所以 φ(p)=p−1。
欧拉筛会将每个合数用它的最小质因子筛去,所以根据这些性质就可以求 [1,n] 的欧拉函数啦。
欧拉函数还有以下性质:
-
设 n>1,则 [1,n] 与 n 互质的数的和为 φ(n)n/2。证明:因为 gcd(n,x)=gcd(n,n−x)。所以我们可认为互质的数是成双成对的。显然 n−x,x 的和是 n,所以 [1,n] 与 n 互质的数的平均数是 n/2。我们又知道 φ(n) 为 [1,n] 与 n 互质的数的个数。所以得证。
-
d∣n∑φ(d)=n。设 f(n)=d∣n∑φ(d)。我们可以证明 f 是积性函数:设 n,m 互质,那么 f(nm)=d∣nm∑φ(d)=d∣n∑φ(d)×d∣m∑φ(d)。该等式成立的原因是 n,m 互质,所以他们没有任何相等的 p。当然,直接利用狄利克雷卷积的性质即可证明。 对于质数 p,f(pk)=φ(1)+φ(p)+⋯+φ(pk)=1+(p−1)+(p−1)×p+(p−1)×p2+⋯+(p−1)×pk−1=pk.所以 f(N)=i=1∏nf(pici)=i=1∏npici=N.证毕.