欧拉函数
在数论中,对正整数 n n n,欧拉函数是小于 n n n的正整数中与 n n n互质的数的个数。
欧拉函数的性质
性质1: 若 m = p 1 k 1 p 2 k 2 ⋯ p n k n m=p_1^{k_1}p_2^{k_2}\cdots p_n^{k_n} m=p1k1p2k2⋯pnkn(其中 p i p_i pi为质数),则
ϕ ( m ) = m ∏ i = 1 n ( 1 − 1 p i ) \phi(m)=m\prod\limits_{i=1}^n(1-\dfrac{1}{p_i}) ϕ(m)=mi=1∏n(1−pi1)
所以我们可以用欧拉筛来筛出区间 [ 1 , n ] [1,n] [1,n]内的 ϕ ( i ) \phi(i) ϕ(i)。
void init(){
ph[1]=1;
for(int i=2;i<=N;i++){
if(!z[i]){
p[++p[0]]=i;
ph[i]=i-1;
}
for(int j=1;j<=p[0]&&i*p[j]<=N;j++){
z[i*p[j]]=1;
if(i%p[j]==0){
ph[i*p[j]]=ph[i]*p[j]%mod;
break;
}
ph[i*p[j]]=ph[i]*(p[j]-1)%mod;
}
}
}
性质2: m = ∑ d ∣ m ϕ ( m d ) = ∑ d ∣ m ϕ ( d ) m=\sum\limits_{d|m}\phi(\dfrac md)=\sum\limits_{d|m}\phi(d) m=d∣m∑ϕ(dm)=d∣m∑ϕ(d)
证明:
\qquad 对于所有的 1 ≤ a ≤ n 1\leq a\leq n 1≤a≤n,存在 d ∣ m d|m d∣m,满足 gcd ( a , m ) = d \gcd(a,m)=d gcd(a,m)=d,即 gcd ( a d , m d ) = 1 \gcd(\dfrac ad,\dfrac md)=1 gcd(da,dm)=1
\qquad 由此可得 1 1 1到 m m m的每一个数 a a a都在 ϕ ( m gcd ( a , m ) ) \phi(\dfrac{m}{\gcd(a,m)}) ϕ(gcd(a,m)m)中被统计了一次
\qquad 所以 m = ∑ d ∣ m ϕ ( m d ) = ∑ d ∣ m ϕ ( d ) m=\sum\limits_{d|m}\phi(\dfrac md)=\sum\limits_{d|m}\phi(d) m=d∣m∑ϕ(dm)=d∣m∑ϕ(d)
性质3: 欧拉函数是积性函数,即对于 n , m n,m n,m,若 n , m n,m n,m互质,则 ϕ ( n m ) = ϕ ( n ) × ϕ ( m ) \phi(nm)=\phi(n)\times \phi(m) ϕ(nm)=ϕ(n)×ϕ(m)
证明:
n
=
p
1
a
1
p
2
a
2
⋯
p
k
a
k
\qquad n=p_1^{a_1}p_2^{a_2}\cdots p_k^{a_k}
n=p1a1p2a2⋯pkak,
p
i
p_i
pi为质数
m = q 1 b 1 q 2 b 2 ⋯ q t b t \qquad m=q_1^{b_1}q_2^{b_2}\cdots q_t^{b_t} m=q1b1q2b2⋯qtbt, q i q_i qi为质数
\qquad 则 ϕ ( n ) = ∏ i = 1 k ( 1 − 1 p i ) \phi(n)=\prod\limits_{i=1}^k(1-\dfrac{1}{p_i}) ϕ(n)=i=1∏k(1−pi1), ϕ ( m ) = ∏ i = 1 t ( 1 − 1 q i ) \phi(m)=\prod\limits_{i=1}^t(1-\dfrac{1}{q_i}) ϕ(m)=i=1∏t(1−qi1)
\qquad 因为 n , m n,m n,m互质,所以 p , q p,q p,q互不相等
\qquad 所以 ϕ ( n m ) = n m ∏ i = 1 k ( 1 − 1 p i ) × ∏ i = 1 t ( 1 − 1 q i ) = ϕ ( n ) × ϕ ( m ) \phi(nm)=nm\prod\limits_{i=1}^k(1-\dfrac{1}{p_i})\times \prod\limits_{i=1}^t(1-\dfrac{1}{q_i})=\phi(n)\times \phi(m) ϕ(nm)=nmi=1∏k(1−pi1)×i=1∏t(1−qi1)=ϕ(n)×ϕ(m)