數論函數與數論恆等式
1. 取整函數
幾個不等式:
插入/刪除取整號
r<n⟺⌊r⌋<n
證明:
r<n⟺n−⌊r⌋>{r}≥0⟺⌊r⌋<n
同理有:
r>n⟺⌈r⌉>n r≤n⟺⌈r⌉≤n
證明:
r≤n⟺⌈r⌉−c≤n⟺⌈r⌉−n≤c<1⟺⌈r⌉<n+1⟺⌈r⌉≤n
同理有:
r≥n⟺⌊r⌋≥n
整除邊界值
證明:
由於:
滿足
滿足:
2. 數論函數
歐拉函數
性質: 歐拉函數是積性函數。
證明:
設
其中
則原式就是:
注意到:
則有:
因子個數函數
性質:
函數
下列性質給出了
j 爲ij 最小的素因子,d(ij)=d(i)(e(i)+2)(e(i)+1) (i,j)=1⇒d(ij)=d(i)∗d(j)
而
const int MAXN = 50005;
int prime[MAXN], not_prime[MAXN], e[MAXN], d[MAXN], top = 0;
void get_prime(int n)
{
e[1] = 0, d[1] = 1;
for (int i = 2; i <= n; i++) {
if (!not_prime[i]) { prime[++top] = i, e[i] = 1, d[i] = 2; }
for (int j = 1; j <= top && prime[j]*i <= n; j++) {
not_prime[prime[j]*i] = 1;
if (i%prime[j] == 0) {
d[prime[j]*i] = d[i]/(e[i]+1)*(e[i]+2);
e[prime[j]*i] = e[i]+1;
break;
}
e[prime[j]*i] = 1;
d[prime[j]*i] = d[i]*d[prime[j]];
}
}
for (int i = 1; i <= 20; i++)
cout << d[i] << " ";
puts("");
}
莫比烏斯函數
符號
性質:
- 莫比烏斯函數是積性函數
∑d|nμ(d)=[n=1] - (反演定理):
F(n)=∑d|nf(n)⟺f(n)=∑d|nμ(nd)F(d)
證明:
∑d|nμ(nd)F(d)=∑d|nμ(nd)∑k|df(k)=∑k|nf(k)∑k|d,d|nμ(nd)
令d=pk,q=n/k ,原式=
∑k|nf(k)∑pk|nμ(npk)=∑k|nf(k)∑p|qμ(qp)=∑k|nf(k)[q=1]=f(n) - 另一種形式的反演定理:
F(i)=∑k≥1f(ki)⟺f(i)=∑k≥1μ(k)F(ki)