欧拉函数 
定义 φ ( n ) \varphi(n) φ ( n )   表示 1 ∼ n 1\sim n 1 ∼ n   中与 n n n   互质的数个数。 
形式化地讲, φ ( n ) = ∑ i = 1 x [ gcd  ( i , n ) = 1 ] \varphi(n)=\sum_{i=1}^{x}[\gcd(i,n)=1] φ ( n ) = ∑ i = 1 x  [ g cd( i , n ) = 1 ]  ,其中 [ ⋅ ] [\cdot] [ ⋅ ]   表示艾佛森括号 。
性质 1 
φ ( p k ) = p k − p k − 1 \varphi(p^k)=p^k-p^{k-1} φ ( p k ) = p k − p k − 1  ,其中 p p p   为质数。
证明:  
1 ∼ p k 1\sim p^k 1 ∼ p k   中恰有 p k − 1 p^{k-1} p k − 1   个 p p p   的倍数,只有他们与 p k p^k p k   不互质。 
即 φ ( p k ) = p k − p k − 1 \varphi(p^k)=p^k-p^{k-1} φ ( p k ) = p k − p k − 1  。
 
性质 2 
欧拉函数是积性函数。 
也就是说,对于互质 a , b a,b a , b  ,φ ( a b ) = φ ( a ) φ ( b ) \varphi(ab)=\varphi(a)\varphi(b) φ ( ab ) = φ ( a ) φ ( b )  。
证明:  
引理1 :x x x   与 a b ab ab   互质的充要条件是 x x x   与 a a a   互质且 x x x   与 b b b   互质。 
证明:显然。
引理2 :x x x   与 a a a   互质的充要条件是 x   m o d   a x \bmod a x mod a   与 a a a   互质。 
证明:由辗转相除法可知,gcd  ( x , a ) = gcd  ( x   m o d   a , a ) \gcd(x,a)=\gcd(x \bmod a,a) g cd( x , a ) = g cd( x mod a , a )  ,而互质即两数最大公约数为 1 1 1  ,故成立。
引理3 :若 a , b a,b a , b   互质,k , k + a , k + 2 a , … , k + ( b − 1 ) a k,k+a,k+2a,\ldots,k+(b-1)a k , k + a , k + 2 a , … , k + ( b − 1 ) a   在模 b b b   意义下遍历 0 ∼ b − 1 0\sim b-1 0 ∼ b − 1  。 
证明:只需证这 b b b   个数模 b b b   互不相同即可。假设存在两个数相同,即 ∃ k < b , k a ≡ 0 ( m o d b ) \exist k<b, ka\equiv 0\pmod b ∃ k < b , ka ≡ 0 ( mod b )  ,这显然与 a , b a,b a , b   互质矛盾,故原命题成立。
则把 1 ∼ a b 1\sim ab 1 ∼ ab   写成一个 a a a   列 b b b   行的表格。
1 2 … a ( a + 1 ) ( a + 2 ) … 2 a ⋮ ⋮ ⋱ ⋮ ( b − 1 ) a + 1 ( b − 1 ) a + 2 … a b \begin{matrix}
 1 &2  &\ldots  & a\\
  (a+1)& (a+2) & \ldots &2a \\
 \vdots & \vdots & \ddots  & \vdots\\
 (b-1)a+1 &  (b-1)a+2& \ldots & ab
\end{matrix}
 1 ( a + 1 ) ⋮ ( b − 1 ) a + 1  2 ( a + 2 ) ⋮ ( b − 1 ) a + 2  … … ⋱ …  a 2 a ⋮ ab  
观察每一行,发现模 a a a   都为 0 ∼ a − 1 0\sim a-1 0 ∼ a − 1  ,则根据引理 2,恰有 φ ( a ) \varphi(a) φ ( a )   列与 a a a   互质。 
观察每一列,每一列为 k , k + a , k + 2 a , … , k + ( b − 1 ) a k,k+a,k+2a,\ldots,k+(b-1)a k , k + a , k + 2 a , … , k + ( b − 1 ) a  。根据引理 3,所以这 b b b   个数恰好不重复的遍历了 0 ∼ b − 1 0\sim b-1 0 ∼ b − 1  ,故每列中恰有 φ ( b ) \varphi(b) φ ( b )   个与 b b b   互质。 
由引理 1 可得,φ ( a b ) = φ ( a ) φ ( b ) \varphi(ab)=\varphi(a)\varphi(b) φ ( ab ) = φ ( a ) φ ( b )  。
 
性质3 
设 n n n   的唯一分解 n = ∏ i = 1 s p i α i n = \displaystyle\prod_{i=1}^s p_i^{\alpha_i} n = i = 1 ∏ s  p i α i    ,则 φ ( n ) = n ∏ i = 1 s p i − 1 p i \varphi(n)=n\displaystyle\prod_{i=1}^s\dfrac{p_i-1}{p_i} φ ( n ) = n i = 1 ∏ s  p i  p i  − 1   。
证明:  
通过性质1,2推导可得。
φ ( n ) = ∏ i = 1 s φ ( p i α i ) = ∏ i = 1 s p i α i − 1 ( 1 − p i ) = n ∏ i = 1 s p i − 1 p i \begin{aligned}
&\varphi(n)\\
 & = \displaystyle\prod_{i  = 1}^s\varphi(p_i^{\alpha_i})\\
 & = \displaystyle\prod_{i  = 1}^s p_i^{\alpha_i-1}(1-p_i)\\
&=n\displaystyle\prod_{i=1}^s\dfrac{p_i-1}{p_i}
\end{aligned}  φ ( n ) = i = 1 ∏ s  φ ( p i α i   ) = i = 1 ∏ s  p i α i  − 1  ( 1 − p i  ) = n i = 1 ∏ s  p i  p i  − 1   
 
应用 :O ( n ) O(\sqrt n) O ( n  )   求一个数的欧拉函数。
1 2 3 4 5 6 7 8 9 10 11 12 template <typename  T>T phi (T x)  {     T ans = x;     for (T i=2 ;i*i<=x;i++){         if (x%i==0 ){             ans = ans/i*(i-1 );             while (x%i==0 )x/=i;         }     }     if  (x > 1 ) ans = ans / x * (x - 1 );     return  ans; }
 
性质4 
φ ( n p ) = { φ ( n ) ⋅ ( p − 1 ) p ∤ n φ ( n ) ⋅ p p ∣ n \varphi(np)=\begin{cases}
\varphi(n)\cdot(p-1)  & p\nmid n \\
 \varphi(n)\cdot p & p\mid n
\end{cases} φ ( n p ) = { φ ( n ) ⋅ ( p − 1 ) φ ( n ) ⋅ p  p ∤ n p ∣ n  
证明:  
通过性质 3 可以很简单证明,留作读者练习。
 
应用 :O ( n ) O(n) O ( n )   求出 1 ∼ n 1\sim n 1 ∼ n   的欧拉函数值(线性筛)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 int  p[N/2 ],cnt,phi[N];bool  vis[N];void  init ()  {     vis[1 ]=1 ;phi[1 ]=1 ;     for (int  i=2 ;i<N;i++){         if (!vis[i]){             p[++cnt]=i;             phi[i]=i-1 ;          }         for (int  j=1 ;j<=cnt&&i*p[j]<N;j++){             vis[i*p[j]]=1 ;             if (i%p[j]==0 ){                 phi[i*p[j]]=phi[i]*p[j];                 break ;             }             else  phi[i*p[j]]=phi[i]*(p[j]-1 );         }     } }
 
性质5(欧拉反演) 
n = ∑ d ∣ n φ ( d ) n = \displaystyle\sum_{d\mid n} \varphi(d) n = d ∣ n ∑  φ ( d )  。
证明:  
考虑枚举 1 ∼ n 1\sim n 1 ∼ n   中和 n n n   的最大公约数为 d d d   的数个数。
n = ∑ d ∣ n ∑ i = 1 n [ gcd  ( i , n ) = d ] = ∑ d ∣ n ∑ i = 1 n / d [ gcd  ( i , n / d ) = 1 ] = ∑ d ∣ n φ ( d ) \begin{aligned}
n=& \displaystyle\sum_{d\mid n}\sum_{i=1}^n[\gcd(i,n)=d]\\
=& \displaystyle\sum_{d\mid n}\sum_{i=1}^{ n/d}[\gcd(i, n/d)=1]\\
=& \displaystyle\sum_{d\mid n}\varphi(d)\\
\end{aligned}
 n = = =  d ∣ n ∑  i = 1 ∑ n  [ g cd( i , n ) = d ] d ∣ n ∑  i = 1 ∑ n / d  [ g cd( i , n / d ) = 1 ] d ∣ n ∑  φ ( d )  
 
欧拉反演 
通过运用 n = ∑ d ∣ n φ ( d ) n = \displaystyle\sum_{d\mid n} \varphi(d) n = d ∣ n ∑  φ ( d )  ,我们可以解决一系列问题,一种典型题目是求一系列 gcd  \gcd g cd  的和。(对比莫比乌斯反演,莫反求的是 gcd  = k \gcd=k g cd= k   的数量)
GCD SUM 
P2398 GCD SUM  
求 ∑ i = 1 n ∑ j = 1 n gcd  ( i , j ) \displaystyle\sum_{i=1}^n \displaystyle\sum_{j=1}^n \gcd(i,j) i = 1 ∑ n  j = 1 ∑ n  g cd( i , j )  。
∑ i = 1 n ∑ j = 1 n gcd  ( i , j ) = ∑ i = 1 n ∑ j = 1 n ∑ d ∣ gcd  ( i , j ) φ ( d ) = ∑ i = 1 n ∑ j = 1 n ∑ d [ d ∣ i ] [ d ∣ j ] φ ( d ) = ∑ d = 1 n ∑ d ∣ i ∑ d ∣ j φ ( d ) = ∑ d = 1 n ⌊ n d ⌋ 2 φ ( d ) \begin{aligned}
&\displaystyle\sum_{i=1}^n \displaystyle\sum_{j=1}^n \gcd(i,j)\\
=&\displaystyle\sum_{i=1}^n \displaystyle\sum_{j=1}^n \displaystyle\sum_{d\mid \gcd(i,j)} \varphi(d)\\
=&\displaystyle\sum_{i=1}^n \displaystyle\sum_{j=1}^n \displaystyle\sum_{d}[d\mid i][d\mid j] \varphi(d)\\
=&\displaystyle\sum_{d=1}^n \sum_{d\mid i}\sum_{d\mid j} \varphi(d)\\
=&\displaystyle\sum_{d=1}^n \left \lfloor \dfrac{n}{d}  \right \rfloor^2 \varphi(d)\\
\end{aligned}
 = = = =  i = 1 ∑ n  j = 1 ∑ n  g cd( i , j ) i = 1 ∑ n  j = 1 ∑ n  d ∣ g c d ( i , j ) ∑  φ ( d ) i = 1 ∑ n  j = 1 ∑ n  d ∑  [ d ∣ i ] [ d ∣ j ] φ ( d ) d = 1 ∑ n  d ∣ i ∑  d ∣ j ∑  φ ( d ) d = 1 ∑ n  ⌊ d n  ⌋ 2 φ ( d )  
练习 :P1390 公约数的和 
求 n 个数两两最大公约数的和 
求 ∑ i = 1 n ∑ j = 1 i − 1 gcd  ( a i , a j ) \displaystyle\sum_{i=1}^n \displaystyle\sum_{j=1}^{i-1} \gcd(a_i,a_j) i = 1 ∑ n  j = 1 ∑ i − 1  g cd( a i  , a j  )  。
只考虑一个 i i i   求出 ∑ j = 1 i − 1 gcd  ( a i , a j ) \displaystyle\sum_{j=1}^{i-1} \gcd(a_i,a_j) j = 1 ∑ i − 1  g cd( a i  , a j  )  。
∑ j = 1 i − 1 gcd  ( a i , a j ) = ∑ j = 1 i − 1 ∑ d ∣ gcd  ( a i , a j ) φ ( d ) = ∑ d ∣ a i φ ( d ) ∑ j = 1 i − 1 [ d ∣ j ] \begin{aligned}
& \displaystyle\sum_{j=1}^{i-1} \gcd(a_i,a_j)\\
=& \displaystyle\sum_{j=1}^{i-1} \sum_{d\mid \gcd(a_i,a_j)}\varphi(d)\\
=&  \sum_{d\mid a_i}\varphi(d)\displaystyle\sum_{j=1}^{i-1}[d\mid j]\\
\end{aligned}
 = =  j = 1 ∑ i − 1  g cd( a i  , a j  ) j = 1 ∑ i − 1  d ∣ g c d ( a i  , a j  ) ∑  φ ( d ) d ∣ a i  ∑  φ ( d ) j = 1 ∑ i − 1  [ d ∣ j ]  
我们只需求出 ∑ j = 1 i − 1 [ d ∣ j ] \displaystyle\sum_{j=1}^{i-1}[d\mid j] j = 1 ∑ i − 1  [ d ∣ j ]   即可。 
这个只需对 1 ∼ i − 1 1\sim i-1 1 ∼ i − 1   的数的每个因数都加进它的贡献即可。
练习 :
[CF1900D] Small GCD  
[ARC185E] Adjacent GCD   
 
莫比乌斯反演?? 
事实上,欧拉函数和莫比乌斯函数之间是密切相关的。
我们有狄利克雷卷积 φ = μ ∗ id  \varphi = \mu * \operatorname {id} φ = μ ∗ id  
这就意味着,莫比乌斯反演和欧拉反演本质是能互相推导的。
具体内容先挖坑,以后计划写一篇从狄利克雷卷积角度重新认识欧拉函数和迪利克雷函数。