更多请见DUMBLOG
一只蒟蒻的数论学习笔记(欧拉函数专题篇)
定义
1 到 N N N 中与 N N N 互质的数的个数被称为欧拉函数,记为 φ ( N ) \varphi(N) φ(N)。
函数式
φ ( n ) = n × ∏ i = 1 m ( 1 − 1 p i ) \varphi \left ( n \right ) = n \times \prod_{i=1}^{m} \left ( 1-\frac{1}{p_{i}} \right ) φ(n)=n×i=1∏m(1−pi1)
性质
性质一
显然,如果 N N 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(ab)=\varphi(a)\varphi(b) φ(ab)=φ(a)φ(b)。
积性函数 指对于所有互质的整数 a a a 和 b b b 有性质 f ( a b ) = f ( a ) f ( b ) f( ab ) = f( a ) f( b ) f(ab)=f(a)f(b) 的数论函数。
性质三
若 n = p k n=p^{k} n=pk, p p p 为 质数,则 φ ( n ) = n ( 1 − 1 p ) = ( p − 1 ) p k − 1 \varphi(n)= n\left (1 - \frac{1}{p} \right )= \left ( p - 1 \right )p^{k-1} φ(n)=n(1−p1)=(p−1)pk−1。
证明
n n n 个数中只有 p p p 的倍数不与 n n n 互质,而 p p p 的倍数 x x x 则有 n p = p k − 1 \dfrac{n}{p}=p^{k-1} pn=pk−1 个,
因此 φ ( n ) = n − n p = n ( 1 − 1 p ) = p k − p k − 1 = ( p − 1 ) p k − 1 \varphi(n)=n-\dfrac{n}{p}=n(1-\dfrac{1}{p})=p^{k}-p^{k-1}=(p-1)p^{k-1} φ(n)=n−pn=n(1−p1)=pk−pk−1=(p−1)pk−1 。
性质四
若
N
=
p
1
c
1
p
2
c
2
.
.
.
p
m
c
m
N=p_{1}^{c_{1}}p_{2}^{c_{2}}...p_{m}^{c_{m}}
N=p1c1p2c2...pmcm,则:
φ
(
N
)
=
N
×
p
1
−
1
p
1
×
p
2
−
1
p
2
×
.
.
.
×
p
m
−
1
p
m
\varphi(N)=N \times \dfrac{p_{1}-1}{p_{1}} \times \dfrac{p_{2}-1}{p_{2}} \times ... \times \dfrac{p_{m}-1}{p_{m}}
φ(N)=N×p1p1−1×p2p2−1×...×pmpm−1
φ
(
N
)
=
N
×
(
1
−
1
p
1
)
×
(
1
−
1
p
2
)
×
.
.
.
×
(
1
−
1
p
m
)
\varphi(N)=N \times \left ( 1-\dfrac{1}{p_{1}} \right ) \times \left ( 1-\dfrac{1}{p_{2}} \right ) \times ... \times \left ( 1-\dfrac{1}{p_{m}} \right )
φ(N)=N×(1−p11)×(1−p21)×...×(1−pm1)
即:
φ
(
n
)
=
n
×
∏
i
=
1
m
(
1
−
1
p
i
)
{\small \varphi \left ( n \right ) = n \times \prod_{i=1}^{m} \left ( 1-\frac{1}{p_{i}} \right )}
φ(n)=n×i=1∏m(1−pi1)
性质五
∀ n > 1 \forall n > 1 ∀n>1,1 到 n n n 中与 n n n 互质的数的和为 n × φ ( n ) 2 n \times \dfrac{\varphi(n)}{2} n×2φ(n)。
证明
因为 gcd ( n , x ) = gcd ( n , n − x ) \gcd( n , x ) = \gcd( n , n-x ) gcd(n,x)=gcd(n,n−x),所以与 n n n 不互质的数 x x x, n − x n - x n−x 成对出现,平均值为 n 2 \dfrac{n}{2} 2n 。
因此,与 n n n 互质的数的平均数也是 n 2 \dfrac{n}{2} 2n,进而可得 1 到 n n n 中所有与 n n n 互质的数的和为 n 2 φ ( n ) \dfrac{n}{2} \varphi(n) 2nφ(n),化简得 n × φ ( n ) 2 \dfrac{n\times \varphi(n)}{2} 2n×φ(n)。
性质六
如果 a m o d p = 0 a \mod p = 0 amodp=0,其中 p p p 为质数,则 φ ( a × p ) = p × φ ( a ) \varphi(a \times p)=p \times \varphi(a) φ(a×p)=p×φ(a)
证明
因为 a m o d p = 0 a \mod p = 0 amodp=0,所以 a × p a \times p a×p 与 a a a 包含相同的质因子,只是其中有一个质因子 p p p 的指数不同。
直接把 φ ( a × p ) \varphi(a \times p) φ(a×p) 和 φ ( a ) \varphi(a) φ(a) 按照函数式写出来,前者除去后者,商为 p p p ,即 φ ( a × p ) φ ( a ) = p \dfrac{\varphi(a \times p)}{\varphi(a)}=p φ(a)φ(a×p)=p
所以 φ ( a × p ) = p × φ ( a ) \varphi(a \times p)=p \times \varphi(a) φ(a×p)=p×φ(a)
性质七
如果 a m o d p ≠ 0 a \mod p \ne 0 amodp=0, 其中 p p p 为质数,则 φ ( a p ) = ( p − 1 ) φ ( a ) \varphi(ap)=(p-1)\varphi(a) φ(ap)=(p−1)φ(a)
证明
欧拉函数为积性函数。
所以 φ ( a p ) = φ ( a ) φ ( p ) \varphi(ap)=\varphi(a)\varphi(p) φ(ap)=φ(a)φ(p),
又因为 p p p 是质数,由 性质一 可得 φ ( p ) = p − 1 \varphi(p)=p-1 φ(p)=p−1
所以 φ ( a p ) = ( p − 1 ) φ ( a ) \varphi(ap)=(p-1)\varphi(a) φ(ap)=(p−1)φ(a)
欧拉定理
若正整数 a a a, n n n 互质,则 a φ ( n ) ≡ 1 ( m o d n ) a^{\varphi(n)} \equiv 1\pmod{n} aφ(n)≡1(modn),其中 φ ( n ) \varphi(n) φ(n) 为欧拉函数。
证明
设 1 到 n n n 中所有与 n n n 互质的数为 a 1 , a 2 , . . . , a φ ( n ) a_{1},a_{2},...,a_{\varphi(n)} a1,a2,...,aφ(n)
因为 a a a 与 n n n 互质, a 1 a_{1} a1 与 n n n 互质 ( a ≡ 1 ( m o d n ) a \equiv 1\pmod{n} a≡1(modn) 并且 a 1 ≡ 1 ( m o d n ) a_{1} \equiv 1\pmod{n} a1≡1(modn)
所以 a a 1 aa_{1} aa1 与 n 互质 ( a a 1 ≡ 1 ( m o d n ) aa_{1} \equiv 1\pmod{n} aa1≡1(modn)
同理 a a 1 , a a 2 , . . . , a a φ ( n ) aa_{1},aa_{2},...,aa_{\varphi(n)} aa1,aa2,...,aaφ(n) 都与 n n n 互质
所以 a a 1 × a a 2 × . . . × a a φ ( n ) = a φ ( n ) × ( a 1 a 2 . . . a φ ( n ) ) aa_{1} \times aa_{2} \times ... \times aa_{\varphi(n)}=a^{\varphi(n)} \times \left ( a_{1}a_{2}...a_{\varphi(n)}\right ) aa1×aa2×...×aaφ(n)=aφ(n)×(a1a2...aφ(n)) 与 n n n 互质
又因为 a φ ( n ) × ( a 1 a 2 . . . a φ ( n ) ) ≡ a 1 a 2 . . . a φ ( n ) ( m o d n ) a^{\varphi(n)} \times \left ( a_{1}a_{2}...a_{\varphi(n)}\right ) \equiv a_{1}a_{2}...a_{\varphi(n)} \pmod{n} aφ(n)×(a1a2...aφ(n))≡a1a2...aφ(n)(modn)
所以 a φ ( n ) ≡ 1 ( m o d n ) a^{\varphi(n)} \equiv 1\pmod{n} aφ(n)≡1(modn)
费马小定理
为欧拉定理的一种情况。
若
p
p
p 为质数,则对于任意整数
a
a
a,有
a
p
≡
a
(
m
o
d
p
)
a^{p} \equiv a \pmod{p}
ap≡a(modp),即
a
p
−
1
≡
1
(
m
o
d
p
)
a^{p-1} \equiv 1 \pmod{p}
ap−1≡1(modp)
证明
是欧拉函数的一种情况
将 φ ( p ) = p − 1 \varphi(p)=p-1 φ(p)=p−1 带入即可
欧拉函数求法
求单个数的欧拉函数
只要在 分解质因数 时顺便将欧拉函数求出来就好了。
int phi(int n)
{
int ans = n;
for (int i = 2; i <= sqrt(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;
}
线性求多个数的欧拉函数
在 线性筛 实现的时候顺便求欧拉函数。
void euler(int x)
{ // primes数组存质数
// phi数组存欧拉函数
for(int i = 2; i <= x; i ++)
{
if(!st[i])
{
primes[cn++] = i;
phi[i] = i - 1;
//这句利用性质一
}
for(int j = 0; primes[j] <= x / i; j ++)
{
st[ primes[j] * i ] = 1;
phi[ primes[j] * i ] = phi[i] * (i % primes[j] ? primes[j] - 1 : primes[j]);
// 这句利用了性质六、七
if( i % primes[j] == 0 ) break;
}
}
}
OK,笔记完。
本蒟蒻刚学 OI ,如有错误请 D 我!!