欧拉函数(数论)
定义
欧拉函数, φ ( n ) \varphi(n) φ(n),表示小于等于 n n n 且与 n n n 互质的数的个数。
欧拉函数的值

等价形式

代码实现:
int euler_phi(int n) {
int ans = n;
for (int i = 2; i * i <= n; i++)
if (n % i == 0) {
ans = ans / i * (i - 1);
while (n % i == 0) n /= i;
}
if (n > 1) ans = ans / n * (n - 1);
return ans;
}
性质
-
若 n 为质数,则 φ ( n ) = n − 1 \varphi(n) = n - 1 φ(n)=n−1。
-
欧拉函数是积性函数。若 gcd ( a , b ) = 1 \gcd(a, b) = 1 gcd(a,b)=1,则 φ ( a × b ) = φ ( a ) × φ ( b ) \varphi(a \times b) = \varphi(a) \times \varphi(b) φ(a×b)=φ(a)×φ(b)。
-
n = ∑ d ∣ n φ ( d ) n = \sum_{d \mid n}{\varphi(d)} n=∑d∣nφ(d)。( d ∣ n d | n d∣n 表示 n 能被 d 整除)
-
若 n = p k n = p^k n=pk, p p p 为质数,则 φ ( n ) = p k − p k − 1 \varphi(n) = p^k - p^{k - 1} φ(n)=pk−pk−1。
-
欧拉定理:若 gcd ( a , m ) = 1 \gcd(a, m) = 1 gcd(a,m)=1,则 a φ ( m ) ≡ 1 ( m o d m ) a^{\varphi(m)} \equiv 1 \pmod{m} aφ(m)≡1(modm)。
-
拓展欧拉定理:
a b ≡ { a b m o d φ ( p ) , gcd ( a , p ) = 1 a b , gcd ( a , p ) ≠ 1 , b < φ ( p ) a b m o d φ ( p ) + φ ( p ) , gcd ( a , p ) ≠ 1 , b ≥ φ ( p ) ( m o d p ) a^b\equiv \begin{cases} a^{b\bmod\varphi(p)},\,&\gcd(a,\,p)=1\\ a^b,&\gcd(a,\,p)\ne1,\,b<\varphi(p)\\ a^{b\bmod\varphi(p)+\varphi(p)},&\gcd(a,\,p)\ne1,\,b\ge\varphi(p) \end{cases} \pmod p ab≡⎩⎪⎨⎪⎧abmodφ(p),ab,abmodφ(p)+φ(p),gcd(a,p)=1gcd(a,p)=1,b<φ(p)gcd(a,p)=1,b≥φ(p)(modp)
- 费马小定理:
若 p p p 为素数, gcd ( a , p ) = 1 \gcd(a, p) = 1 gcd(a,p)=1,则 a p − 1 ≡ 1 ( m o d p ) a^{p - 1} \equiv 1 \pmod{p} ap−1≡1(modp)。
另一个形式:对于任意整数 a a a,有 a p ≡ a ( m o d p ) a^p \equiv a \pmod{p} ap≡a(modp)。