数论学习笔记(欧拉函数专题篇)

快来学数论!本文介绍欧拉函数的定义性质及拓展。

定义

1 到 NN 中与 NN 互质的数的个数被称为欧拉函数,记为 φ(N)\varphi(N)。

函数式

φ(n)=n×∏_i=1m(1−1p_i)\varphi \left ( n \right ) = n \times \prod\_{i=1}^{m} \left ( 1-\frac{1}{p\_{i}} \right )

性质

性质一

显然,如果 NN 为 质数,则 φ(N)=N−1\varphi(N)=N-1

性质二

欧拉函数为 积性函数: 若 gcd⁡(a,b)=1\gcd(a , b ) = 1,则 φ(ab)=φ(a)φ(b)\varphi(ab)=\varphi(a)\varphi(b)。

积性函数 指对于所有互质的整数 aa 和 bb 有性质 f(ab)=f(a)f(b)f( ab ) = f( a ) f( b ) 的数论函数。

性质三

若 n=pkn=p^{k},pp 为 质数,则 φ(n)=n(1−1p)=(p−1)pk−1\varphi(n)= n\left (1 - \frac{1}{p} \right )= \left ( p - 1 \right )p^{k-1}。

证明
nn 个数中只有 pp 的倍数不与 nn 互质,而 pp 的倍数 xx 则有 np=pk−1\dfrac{n}{p}=p^{k-1} 个,
因此 φ(n)=n−np=n(1−1p)=pk−pk−1=(p−1)pk−1\varphi(n)=n-\dfrac{n}{p}=n(1-\dfrac{1}{p})=p^{k}-p^{k-1}=(p-1)p^{k-1} 。

性质四

若 N=p_1c_1p_2c_2...p_mc_mN=p\_{1}^{c\_{1}}p\_{2}^{c\_{2}}...p\_{m}^{c\_{m}},则:
φ(N)=N×p_1−1p_1×p_2−1p_2×...×p_m−1p_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×(1−1p_1)×(1−1p_2)×...×(1−1p_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 )

即:
${\small \varphi \left ( n \right ) = n \times \prod_{i=1}^{m} \left ( 1-\frac{1}{p_{i}} \right )} $

性质五

∀n>1\forall n > 1,1 到 nn 中与 nn 互质的数的和为 n×φ(n)2n \times \dfrac{\varphi(n)}{2}。

证明
因为 gcd⁡(n,x)=gcd⁡(n,n−x)\gcd( n , x ) = \gcd( n , n-x ),所以与 nn 不互质的数 xx,n−xn - x 成对出现,平均值为 n2\dfrac{n}{2} 。
因此,与 nn 互质的数的平均数也是 n2\dfrac{n}{2},进而可得 1 到 nn 中所有与 nn 互质的数的和为 n2φ(n)\dfrac{n}{2} \varphi(n),化简得 n×φ(n)2\dfrac{n\times \varphi(n)}{2}。

性质六

如果 amod  p=0a \mod p = 0,其中 pp 为质数,则 φ(a×p)=p×φ(a)\varphi(a \times p)=p \times \varphi(a)

证明
因为 amod  p=0a \mod p = 0,所以 a×pa \times p 与 aa 包含相同的质因子,只是其中有一个质因子 pp 的指数不同。
直接把 φ(a×p)\varphi(a \times p) 和 φ(a)\varphi(a) 按照函数式写出来,前者除去后者,商为 pp ,即 φ(a×p)φ(a)=p\dfrac{\varphi(a \times p)}{\varphi(a)}=p
所以 φ(a×p)=p×φ(a)\varphi(a \times p)=p \times \varphi(a)

性质七

如果 amod  p≠0a \mod p \ne 0, 其中 pp 为质数,则 φ(ap)=(p−1)φ(a)\varphi(ap)=(p-1)\varphi(a)

证明
欧拉函数为积性函数。
所以 φ(ap)=φ(a)φ(p)\varphi(ap)=\varphi(a)\varphi(p),
又因为 pp 是质数,由 性质一 可得 φ(p)=p−1\varphi(p)=p-1
所以 φ(ap)=(p−1)φ(a)\varphi(ap)=(p-1)\varphi(a)

欧拉定理

若正整数 aa,nn 互质,则 aφ(n)≡1(modn)a^{\varphi(n)} \equiv 1\pmod{n},其中 φ(n)\varphi(n) 为欧拉函数。

证明
设 1 到 nn 中所有与 nn 互质的数为 a_1,a_2,...,a_φ(n)a\_{1},a\_{2},...,a\_{\varphi(n)}
因为 aa 与 nn 互质,a_1a\_{1} 与 nn 互质 (a≡1(modn)a \equiv 1\pmod{n} 并且 a_1≡1(modn)a\_{1} \equiv 1\pmod{n}
所以 aa_1aa\_{1} 与 n 互质 (aa_1≡1(modn)aa\_{1} \equiv 1\pmod{n}
同理 aa_1,aa_2,...,aa_φ(n)aa\_{1},aa\_{2},...,aa\_{\varphi(n)} 都与 nn 互质
所以 aa_1×aa_2×...×aa_φ(n)=aφ(n)×(a_1a_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 ) 与 nn 互质
又因为 aφ(n)×(a_1a_2...a_φ(n))≡a_1a_2...a_φ(n)(modn)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)≡1(modn)a^{\varphi(n)} \equiv 1\pmod{n}

费马小定理

为欧拉定理的一种情况。
若 pp 为质数,则对于任意整数 aa,有 ap≡a(modp)a^{p} \equiv a \pmod{p},即 ap−1≡1(modp)a^{p-1} \equiv 1 \pmod{p}

证明
是欧拉函数的一种情况
将 φ(p)=p−1\varphi(p)=p-1 带入即可

欧拉函数求法

求单个数的欧拉函数

只要在 分解质因数 时顺便将欧拉函数求出来就好了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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;
}

线性求多个数的欧拉函数

在 线性筛 实现的时候顺便求欧拉函数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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 我!!