预备知识
-
剩余系:指对于某一个特定的正整数n,一个整数集中的数mod n所得的余数域。
-
完全剩余系: 设 m ∈ Z + , 若 r 0 , r 1 , . . . r m − 1 为 m 个 整 数 , 并 且 两 两 模 m 不 同 余 , 则 r 0 , r 1 , . . . r m − 1 叫 作 模 m 的 一 个 完 全 剩 余 系 。 设m∈Z+,若r_0,r_1,...r_{m-1}为m个整数,并且两两模m不同余,则r_0,r_1,...r_{m-1}叫作模m的一个完全剩余系。 设m∈Z+,若r0,r1,...rm−1为m个整数,并且两两模m不同余,则r0,r1,...rm−1叫作模m的一个完全剩余系。
-
缩系:设A是mod n的剩余系,若任意A中两个元素相乘mod n后仍为A中的元素,则称A为mod n的缩系
好吧其实后面好像用不上,但总还是有用的。
欧拉函数
- 定义
φ ( n ) \varphi(n) φ(n)为不超过n且与n互质的数的个数。
显然,若p为质数, φ ( p ) = p − 1 \varphi(p)=p-1 φ(p)=p−1
φ ( p k ) = p k − p k − 1 \varphi(p^k)=p^k-p^{k-1} φ(pk)=pk−pk−1 因为与 p k p^k pk不互质的只有p的倍数,而p的倍数有 P k − 1 P^{k-1} Pk−1个。
欧拉函数是积性函数。
证明:(需要中国剩余定理)
n = p 1 k 1 p 2 k 2 . . . p m k m n=p_1^{k_1}p_2^{k_2}...p_m^{k_m} n=p1k1p2k2...pmkm
若x,n互质,则x%n, p 1 k 1 也 互 质 p_1^{k_1}也互质 p1k1也互质
{ x ≡ a 1 m o d p 1 k 1 x ≡ a 2 m o d p 2 k 2 . . . x ≡ a m m o d p m k m \begin{cases} x \equiv a_1 mod p_1^{k_1}\\ x \equiv a_2 mod p_2^{k_2}\\ ...\\ x \equiv a_m mod p_m^{k_m}\\ \end{cases} ⎩⎪⎪⎪⎨⎪⎪⎪⎧x≡ a1 mod p1k1x≡ a2 mod p2k2...x≡ am mod pmkm
x , a i , p i k 1 均 互 质 x,a_i,p_i^{k_1}均互质 x,ai,pik1均互质
在一组方程中, a i a_i ai 有多种取法,需满足gcd( a 1 , p 1 k 1 ) = 1 a_1,p_1^{k_1})=1 a1,p1k1)=1
∴ \therefore ∴ φ ( p i k i ) \varphi(p_i^{k_i}) φ(piki)=sizeof{ a i a_i ai}
根据中国剩余定理,在1~n范围内有唯一x,又gcd(x,n)=1
则x有 φ ( n ) \varphi(n) φ(n)中取法
对于每一个x,与{ a 1 , a 2 , . . . , a m a_1,a_2,...,a_m a1,a2,...,am}集合唯一对应
有 N a 1 ∗ N a 2 ∗ . . . ∗ N a m N_{a_1}*N_{a_2}*...*N_{a_m} Na1∗Na2∗...∗Nam种方法
= φ ( p 1 k 1 ) ∗ φ ( p 2 k 2 ) ∗ . . . ∗ φ ( p m k m ) \varphi(p_1^{k_1})*\varphi(p_2^{k_2})*...*\varphi(p_m^{k_m}) φ(p1k1)∗φ(p2k2)∗...∗φ(pmkm)
分别对应一个唯一的x
∴ \therefore ∴ φ ( p 1 k 1 ) ∗ φ ( p 2 k 2 ) ∗ . . . ∗ φ ( p m k m ) = φ ( n ) \varphi(p_1^{k_1})*\varphi(p_2^{k_2})*...*\varphi(p_m^{k_m})=\varphi(n) φ(p1k1)∗φ(p2k2)∗...∗φ(pmkm)=φ(n)
又 n = p 1 k 1 p 2 k 2 . . . p m k m n=p_1^{k_1}p_2^{k_2}...p_m^{k_m} n=p1k1p2k2...pmkm
∴ \therefore ∴ φ \varphi φ为积性函数
若gcd(a,M)=1,则 a φ ( M ) ≡ 1 ( m o d M ) a^{\varphi(M)} \equiv 1 (mod M) aφ(M)≡ 1 (mod M)
证明:
设a,M互质,有M的一个缩系为{ a , 2 a , . . . , φ ( M ) a a,2a,...,\varphi(M)a a,2a,...,φ(M)a},缩系元素个数为 φ ( M ) \varphi(M) φ(M)个
φ ( M ) ! ≡ ∏ φ ( M ) a i ( m o d M ) \varphi(M)! \equiv \prod^{\varphi(M)}{a_i} (mod M) φ(M)! ≡ ∏φ(M)ai (mod M)
φ ( M ) ! ≡ a φ ( M ) φ ( M ) ! ( m o d M ) \varphi(M)! \equiv a^{\varphi(M)}\varphi(M)! (mod M) φ(M)! ≡ aφ(M)φ(M)! (mod M)
a φ ( M ) ≡ 1 ( m o d M ) a^{\varphi(M)} \equiv 1 (mod M) aφ(M)≡ 1 (mod M)
当M为质数时,则有 φ ( M ) = M − 1 \varphi(M)=M-1 φ(M)=M−1,即费马小定理
扩展欧拉定理
如果gcd(a,M)!=1,那么 a b ≡ a b m o d φ ( M ) + φ ( M ) ( m o d M ) ( b > φ ( M ) ) a^b \equiv a^{b mod \varphi(M)+\varphi(M)} (mod M)(b>\varphi(M)) ab≡ab mod φ(M)+φ(M) (mod M)(b>φ(M))
证明:
先考虑
M
M
M的一个质因子p ,
g
c
d
(
p
,
M
)
=
p
gcd(p,M)=p
gcd(p,M)=p
把
M
M
M分解:
M
=
s
∗
p
k
,
g
c
d
(
s
,
p
)
=
1
M=s*p^k,gcd(s,p)=1
M=s∗pk,gcd(s,p)=1
可得:
p
x
≡
p
x
m
o
d
φ
(
s
)
m
o
d
s
(
x
>
φ
(
s
)
)
p^x \equiv p^{x mod \varphi(s)} mod s (x>\varphi(s))
px≡px mod φ(s) mod s (x>φ(s))
又
∵
\because
∵
φ
(
s
)
∣
φ
(
M
)
\varphi(s) | \varphi(M)
φ(s)∣φ(M)(
φ
\varphi
φ是积性函数)
∴
\therefore
∴
p
x
≡
p
x
m
o
d
φ
(
M
)
m
o
d
M
p^x\equiv p^{x mod \varphi(M)} mod M
px≡px mod φ(M) mod M
更有
p
x
≡
p
x
m
o
d
φ
(
M
)
+
φ
(
M
)
m
o
d
M
p^x \equiv p^{x mod \varphi(M) +\varphi(M)} mod M
px≡px mod φ(M)+φ(M) mod M
对于任意一个数
a
,
g
c
d
(
a
,
M
)
=
b
,
b
=
̸
1
a,gcd(a,M)=b,b=\not1
a,gcd(a,M)=b,b≠1
有
a
=
b
k
1
∗
r
1
,
g
c
d
(
r
1
,
M
)
=
1
a=b^{k_1}*r_1,gcd(r_1,M)=1
a=bk1∗r1,gcd(r1,M)=1
则
a
x
≡
b
k
1
x
∗
r
1
x
m
o
d
M
a^x \equiv {b^{k_1}}^x*{r_1}^x mod M
ax≡bk1x∗r1x mod M
a
x
≡
b
k
1
x
m
o
d
φ
(
M
)
+
φ
(
M
)
∗
r
1
x
m
o
d
φ
(
M
)
+
φ
(
M
)
m
o
d
M
a^x \equiv {b^{k_1}}^{x mod \varphi(M)+\varphi(M)}*{r_1}^{x mod \varphi(M)+\varphi(M)} mod M
ax≡bk1x mod φ(M)+φ(M)∗r1x mod φ(M)+φ(M) mod M
a
x
≡
b
k
1
∗
r
1
x
m
o
d
φ
(
M
)
m
o
d
M
a^x \equiv {b^{k_1}*r_1}^{x mod \varphi(M)} mod M
ax≡bk1∗r1x mod φ(M) mod M
即
a
x
≡
a
x
m
o
d
φ
(
M
)
+
φ
(
M
)
m
o
d
M
(
x
>
φ
(
M
)
)
a^x \equiv {a}^{x mod \varphi(M)+\varphi(M)} mod M (x>\varphi(M))
ax≡ax mod φ(M)+φ(M) mod M (x>φ(M))
证毕
ok,继续之前的内容
当n= p 1 a 1 p 2 a 2 . . . p k a k p_1^{a_1}p_2^{a_2}...p_k^{a_k} p1a1p2a2...pkak时
ϕ
(
n
)
=
∏
i
=
1
k
p
i
a
i
−
1
(
p
i
−
1
)
=
n
∗
∏
i
=
1
k
(
1
−
1
p
i
)
=
n
∗
∏
i
=
1
k
p
i
−
1
p
i
\phi(n)=\prod_{i=1}^{k}{p_i^{a_i-1}(p_i-1)}=n*\prod_{i=1}^k{(1-\frac{1}{p_i})}=n*\prod_{i=1}^k{\frac{p_i-1}{p_i}}
ϕ(n)=i=1∏kpiai−1(pi−1)=n∗i=1∏k(1−pi1)=n∗i=1∏kpipi−1
可以用此式子递推
递推证明
递推代码
/*******************************
Author:galaxy yr
LANG:C++
Created Time:2019年01月22日 星期二 15时53分29秒
*******************************/
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn=1e6+10;
int n=1e6,prime[maxn],vis[maxn],tot,mn[maxn],e[maxn],phi[maxn],d[maxn],mu[maxn];
//e最小质因子的个数,mn最小质因子,phi欧拉函数,d约数个数,mu莫比乌斯函数
void euler_sieve()
{
mu[1]=1;phi[1]=1;
for(int i=2;i<=n;i++)
{
if(!vis[i]) { prime[++tot]=i;mn[i]=i;e[i]=1;phi[i]=i-1;d[i]=2;mu[i]=-1; }
for(int j=1;j<=tot and prime[j]*i<=n;j++)
{
vis[prime[j]*i]=1;
mn[prime[j]*i]=prime[j];
e[prime[j]*i]=1;
if(i%prime[j]==0)
{
phi[i*prime[j]]=phi[i]*prime[j];
e[prime[j]*i]=e[i]+1;
d[i*prime[j]]=d[i]/(e[i]+1)*(e[i]+2);
break;
}
else phi[i*prime[j]]=phi[i]*(prime[j]-1);
mu[i*prime[j]]=-mu[i];
d[i*prime[j]]<<=1;
}
}
}
int main()
{
}
欧拉反演
∑
i
=
1
n
g
c
d
(
i
,
n
)
=
∑
d
∣
n
n
d
φ
(
d
)
\begin{aligned}\sum_{i=1}^ngcd(i,n)=\sum_{d|n}\frac{n}{d}\varphi(d)\end{aligned}
i=1∑ngcd(i,n)=d∣n∑dnφ(d)
证明:
首先有
n
=
∑
d
∣
n
φ
(
d
)
\begin{aligned}n=\sum_{d|n}{\varphi(d)}\end{aligned}
n=d∣n∑φ(d)
即n的因数(包括1和它自己))的欧拉函数之和等于n
证明
设 f ( n ) = ∑ d ∣ n φ ( d ) \begin{aligned}f(n)=\sum_{d|n}{\varphi(d)}\end{aligned} f(n)=d∣n∑φ(d),有 f f f是积性函数。
f ( n ) ⋅ f ( m ) = ∑ i ∣ n φ ( i ) ∑ j ∣ m φ ( j ) = ∑ i ∣ n ∑ j ∣ m φ ( i ) ⋅ φ ( j ) = ∑ i ∣ n ∑ j ∣ m φ ( i ⋅ j ) = ∑ d ∣ n m φ ( d ) = f ( n m ) \begin{aligned}f(n)·f(m)=\sum_{i|n}\varphi(i)\sum_{j|m}\varphi(j)=\sum_{i|n}\sum_{j|m}\varphi(i)·\varphi(j)=\sum_{i|n}\sum_{j|m}\varphi(i·j)=\sum_{d|nm}\varphi(d)=f(nm)\end{aligned} f(n)⋅f(m)=i∣n∑φ(i)j∣m∑φ(j)=i∣n∑j∣m∑φ(i)⋅φ(j)=i∣n∑j∣m∑φ(i⋅j)=d∣nm∑φ(d)=f(nm)
f ( p k ) = φ ( 1 ) + φ ( p ) + φ ( p 2 ) + ⋯ + φ ( p k ) = 1 + ( p − 1 ) + ( p 2 − p ) + ⋯ + ( p k − p k − 1 ) = p k f(p^k)=\varphi(1)+\varphi(p)+\varphi(p^2)+\cdots+\varphi(p^k)=1+(p-1)+(p^2-p)+\cdots+(p^k-p^{k-1})=p^k f(pk)=φ(1)+φ(p)+φ(p2)+⋯+φ(pk)=1+(p−1)+(p2−p)+⋯+(pk−pk−1)=pk
f ( n ) = f ( p 1 k 1 ) ⋅ f ( p 2 k 2 ) ⋅ ⋯ ⋅ f ( p m k m ) = p 1 k 1 ⋅ p 2 k 2 ⋅ ⋯ ⋅ p m k m = n f(n)=f(p_1^{k_1})·f(p_2^{k_2})·\cdots·f(p_m^{k_m})=p_1^{k_1} ·p_2^{k_2}· \cdots·p_m^{k_m}=n f(n)=f(p1k1)⋅f(p2k2)⋅⋯⋅f(pmkm)=p1k1⋅p2k2⋅⋯⋅pmkm=n
把n=gcd(i,j)代入得
g c d ( i , j ) = ∑ d ∣ g c d ( i , j ) φ ( d ) = ∑ d ∣ i ∑ d ∣ j φ ( d ) \begin{aligned}gcd(i,j)=\sum_{d|gcd(i,j)}\varphi(d)=\sum_{d|i}\sum_{d|j}\varphi(d)\end{aligned} gcd(i,j)=d∣gcd(i,j)∑φ(d)=d∣i∑d∣j∑φ(d)
∑ i = 1 n g c d ( i , n ) = ∑ i = 1 n ∑ d ∣ i ∑ d ∣ n φ ( d ) = ∑ d ∣ n ∑ i = 1 n ∑ d ∣ i φ ( d ) = ∑ d ∣ n n d φ ( d ) \begin{aligned}\sum_{i=1}^ngcd(i,n)=\sum_{i=1}^n\sum_{d|i}\sum_{d|n}\varphi(d)=\sum_{d|n}\sum_{i=1}^n\sum_{d|i}\varphi(d)=\sum_{d|n}\frac{n}{d}\varphi(d)\end{aligned} i=1∑ngcd(i,n)=i=1∑nd∣i∑d∣n∑φ(d)=d∣n∑i=1∑nd∣i∑φ(d)=d∣n∑dnφ(d)
即 ∑ i = 1 n g c d ( i , n ) = ∑ d ∣ n n d φ ( d ) \begin{aligned}\sum_{i=1}^ngcd(i,n)=\sum_{d|n}\frac{n}{d}\varphi(d)\end{aligned} i=1∑ngcd(i,n)=d∣n∑dnφ(d)