1 数论函数
函数: 函数具备两个要素——值域和定义域。
f
(
x
)
⏟
值域
=
x
−
1
⏟
定义域
\underbrace{f(x)}_{值域}=\underbrace{x-1}_{定义域}
值域
f(x)=定义域
x−1
- 定义域:变量 x x x 的取值范围
- 值域:对应的函数 f ( x ) f(x) f(x) 的取值范围
数论函数: 非特殊要求情况下,定义域为正整数的函数。
对于数论函数,有一下三种类型:
- 普通的函数
- 完全积性函数: 对于两个整数 n n n, m m m,函数满足条件
f ( m n ) = f ( m ) f ( n ) f(mn)=f(m)f(n) f(mn)=f(m)f(n)
- 积性函数: 对于两个素数 n n n, m m m,函数满足条件
f ( m n ) = f ( m ) f ( n ) f(mn)=f(m)f(n) f(mn)=f(m)f(n)
常数函数:
1
(
n
)
=
1
1(n)=1
1(n)=1
单位函数:
[
表达式
]
[表达式]
[表达式]:如果表达式为真,则等于
1
1
1 ;反之等于
0
0
0。
ε
(
n
)
=
[
n
=
1
]
\varepsilon(n)=[n=1]
ε(n)=[n=1]
单位函数也是一种完全积性函数。
ε
(
m
n
)
=
{
1
m
=
1
,
n
=
1
0
m
≠
1
∨
n
≠
1
\varepsilon(mn)= \begin{cases} 1 & m=1,n=1\\ 0 & m\ne 1\vee n\ne 1 \end{cases}
ε(mn)={10m=1,n=1m=1∨n=1
2 欧拉函数
φ ( n ) \varphi(n) φ(n): [ 1 , n ] [1,n] [1,n] 中与 n n n 互质的数的个数 ( n ∈ N ∗ ) (n\in\N^*) (n∈N∗)。
定义式:
φ
(
n
)
=
∑
i
=
1
n
[
(
i
,
n
)
=
1
]
\varphi(n)=\sum_{i=1}^n[(i,n)=1]
φ(n)=i=1∑n[(i,n)=1]
欧拉函数式积性函数(非完全)。
欧拉函数公式:
φ
(
n
)
=
n
∏
p
∣
n
p
为素数
(
1
−
1
p
)
\varphi(n)=n\prod_{\begin{aligned}&\scriptsize{p\mid n}\\ &\scriptsize{p为素数} \end{aligned}}\left(1-\frac{1}{p}\right)
φ(n)=np∣np为素数∏(1−p1)
补充:容斥原理
规律为“奇加偶减”,例如三个集合的容斥: A + B + C − A ∩ B − A ∩ C − B ∩ C + A ∩ B ∩ C A+B+C-A\cap B-A\cap C-B\cap C+ A\cap B\cap C A+B+C−A∩B−A∩C−B∩C+A∩B∩C
证明:
讨论 n 由两种质因子 p , q 的情况 : 讨论n由两种质因子p,q的情况: 讨论n由两种质因子p,q的情况:
[
1
,
n
]
中
p
的倍数:
[1,n]中p的倍数:
[1,n]中p的倍数:
p
,
2
p
,
3
p
,
…
,
n
p
p
p,2p,3p,\ldots,\frac{n}{p}p
p,2p,3p,…,pnp
[
1
,
n
]
中
q
的倍数:
[1,n]中q的倍数:
[1,n]中q的倍数:
q
,
2
q
,
3
q
,
…
,
n
q
q
q,2q,3q,\ldots,\frac{n}{q}q
q,2q,3q,…,qnq
则一共有:
则一共有:
则一共有:
n
p
+
n
q
−
n
p
q
\frac{n}{p}+\frac{n}{q}-\frac{n}{pq}
pn+qn−pqn
则
[
1
,
n
]
中剩余的数即为互质的数:
则[1,n]中剩余的数即为互质的数:
则[1,n]中剩余的数即为互质的数:
φ
(
n
)
=
n
−
n
p
−
n
q
+
n
p
q
=
n
(
n
−
1
p
)
(
n
−
1
q
)
\begin{aligned} \varphi(n) &= n-\frac{n}{p}-\frac{n}{q}+\frac{n}{pq}\\ &= n\left(n-\frac{1}{p}\right)\left(n-\frac{1}{q}\right) \end{aligned}
φ(n)=n−pn−qn+pqn=n(n−p1)(n−q1)
同理,得到公式:
同理,得到公式:
同理,得到公式:
φ
(
n
)
=
n
∏
p
∣
n
p
为素数
(
1
−
1
p
)
\varphi(n)=n\prod_{\begin{aligned}&\scriptsize{p\mid n}\\ &\scriptsize{p为素数} \end{aligned}}\left(1-\frac{1}{p}\right)
φ(n)=np∣np为素数∏(1−p1)
性质:
φ
(
n
)
=
n
−
1
(
n
为素数
)
(1)
\varphi(n)=n-1(n为素数)\tag1
φ(n)=n−1(n为素数)(1)
若 n = p k , φ ( n ) = p k − p k − 1 ( p 为素数 ) (2) 若n=p^k,\varphi(n)=p^k-p^{k-1}(p为素数)\tag2 若n=pk,φ(n)=pk−pk−1(p为素数)(2)
φ ( 2 n ) = φ ( n ) ( n 为素数 ) (3) \varphi(2n)=\varphi(n)(n为素数)\tag3 φ(2n)=φ(n)(n为素数)(3)
∑ d ∣ n φ ( d ) = n (4) \sum_{d\mid n}\varphi(d)=n\tag4 d∣n∑φ(d)=n(4)
若 p ∣ n , 且 p 2 ∣ n , 则 φ ( n ) = φ ( n p ) p (5) 若p\mid n,且p^2\mid n,则\varphi(n)=\varphi\left(\frac{n}{p}\right)p\tag5 若p∣n,且p2∣n,则φ(n)=φ(pn)p(5)
C++求欧拉函数Euler_func()
:
void Euler_func(int n) {
is_prime[0] = is_prime[1] = true;
size = 0;
for (int i = 2; i <= n; i++) {
if (!is_prime[i]) {
prime[++size] = i;
phi[i] = i - 1; //性质1
}
for (int j = 1; j <= size && i * prime[j] <= n; j++) {
is_prime[i * prime[j]] = true;
if (i % prime[j] == 0) {
phi[i * prime[j]] = phi[i] * prime[j]; //性质5
break;
}
phi[i * prime[j]] = phi[i] * phi[prime[j]]; //积性函数
}
}
}
3 莫比乌斯函数
莫比乌斯函数:
μ
(
n
)
=
{
1
n
=
1
(
−
1
)
r
n
=
∏
i
=
1
r
p
i
(
p
1
≠
p
2
≠
…
p
r
,
p
1
∼
r
为质数
)
0
e
l
s
e
\mu(n)= \begin{cases} 1 &n = 1\\ (-1)^r &n=\prod_{i=1}^rp_i(p_1\ne p_2\ne\dots p_r,p_{1\sim r}为质数)\\ 0 &else \end{cases}
μ(n)=⎩
⎨
⎧1(−1)r0n=1n=∏i=1rpi(p1=p2=…pr,p1∼r为质数)else
μ
(
n
)
=
(
−
1
)
r
\mu(n)=(-1)^r
μ(n)=(−1)r 的条件也可以说成
n
n
n 无平方因子。
莫比乌斯函数是积性函数(非完全)。
C++求莫比乌斯函数Mobius_func()
:
void Mobius_func(int n) {
is_prime[0] = is_prime[1] = true;
size = 0;
mu[1] = 1;
for (int i = 2; i <= n; i++) {
if (!is_prime[i]) {
prime[++size] = i;
mu[i] = -1; //素数无平方因子,且只有一个质因子,r=1,mu(n) = -1
}
for (int j = 1; j <= size && i * prime[j] <= n; j++) {
is_prime[i * prime[j]] = true;
if (i % prime[j] == 0) {
mu[i * prime[j]] = 0; //有平方因子,mu(n) = 0
break;
}
mu[i * prime[j]] = -mu[i]; //积性函数,mu(n) * mu(p) = -mu(n)
}
}
}
4 欧拉定理和欧拉降幂
欧拉定理:
若
(
a
,
m
)
=
1
,
则
a
φ
(
b
)
−
1
≡
1
(
m
o
d
m
)
若(a,m)=1,则\ a^{\varphi(b) - 1} \equiv 1(\mod m)
若(a,m)=1,则 aφ(b)−1≡1(modm)
观察欧拉定理与费马小定理,可以发现,费马小定理是欧拉定理的特例。
根据欧拉定理,对于求 x x x 的问题 a b ≡ x ( m o d m ) a^b\equiv x(\mod m) ab≡x(modm),可以化简原式,将 a a a 的指数 b b b 减小,也就是欧拉降幂。
欧拉降幂:
a
b
=
{
a
b
b
<
φ
(
m
)
a
(
b
m
o
d
φ
(
m
)
)
+
φ
(
m
)
b
≥
φ
(
m
)
(
m
o
d
m
)
a^b= \begin{cases} a^b &b<\varphi(m)\\ a^{(b\mod \varphi(m)) +\varphi(m)} &b\ge \varphi(m) \end{cases} (\mod m)
ab={aba(bmodφ(m))+φ(m)b<φ(m)b≥φ(m)(modm)
5 例题:二元一次不定方程的解
题目描述:
需要求解的方程为:
a
x
+
b
y
=
1
ax+by=1
ax+by=1
其中
a
a
a,
b
b
b 为已知的正整数。
找出
x
x
x 的最小非负整数解和对应的
y
y
y,没有输出sorry
。
题解:
a
x
+
b
y
=
1
a
x
=
1
−
b
y
a
x
≡
1
(
m
o
d
b
)
\begin{aligned} ax + by &= 1\\ ax &= 1 - by\\ ax &\equiv 1(\mod b) \end{aligned}
ax+byaxax=1=1−by≡1(modb)
也就是说,
x
x
x 是
a
a
a 模
b
b
b 的逆元。
欧拉定理求逆元:
x
=
a
φ
(
b
)
−
1
m
o
d
b
(
(
a
,
b
)
=
1
)
x=a^{\varphi(b)-1}\mod b((a,b)=1)
x=aφ(b)−1modb((a,b)=1)
在本题中,如果出现
(
a
,
b
)
≠
1
(a,b)\ne 1
(a,b)=1 的情况,则无符合题意的解,即输出sorry
。