[关闭]
@ljt12138 2017-04-16T08:03:45.000000Z 字数 3631 阅读 1638

数论函数与数论恒等式

省选前最后要学的新知识了,下周开始模板复习。


1. 取整函数

r=⌊r⌋+{r},⌊r⌋∈Z,{r}∈[0,1)

r=⌈r⌉−c,⌈r⌉∈Z,c∈[0,1)

几个不等式:

插入/删除取整号

  1. r<n⟺⌊r⌋<n
    证明:

    r<n⟺n−⌊r⌋>{r}≥0⟺⌊r⌋<n

    同理有:
    r>n⟺⌈r⌉>n

  2. r≤n⟺⌈r⌉≤n
    证明:

    r≤n⟺⌈r⌉−c≤n⟺⌈r⌉−n≤c<1⟺⌈r⌉<n+1⟺⌈r⌉≤n

    同理有:
    r≥n⟺⌊r⌋≥n

整除边界值

⌊pi⌋=⌊pk⌋⇒k≤⎢⎣⎢⎢⎢p⌊pi⌋⎥⎦⎥⎥⎥

证明:

由于:

pi=⌊pi⌋+c1pk=⌊pk⌋+c2

满足c∈[0,1),联立以上若干式,可得:

0≤pk−⌊pi⌋<1

满足:

k≤p⌊pi⌋⟺k≤⎢⎣⎢⎢⎢p⌊pi⌋⎥⎦⎥⎥⎥

2. 数论函数

欧拉函数

φ(i)=∑k≤i[(i,k)=1]

性质: 欧拉函数是积性函数。

证明:

φ(ij)=∑k≤ij[(ij,k)=1]=∑k≤ij[(i,k)=1][(j,k)=1]=∑j(p−1)+q≤ij,q≤j[(i,j(p−1)+q)=1][(j,j(p−1)+q)=1]=∑(p−1)+q/j≤i,q≤j[(i,j(p−1)+q)=1][(j,q)=1]

设k=(p−1)+q/j,则原式为:

∑k≤i,q≤j[(i,kj)=1][(j,q)=1]

其中k是一个有理数,因为素数有无穷多个,对于任意大的i,j,总可以找到一个素数作为模。容易利用同余式证明模意义下存在:

(i,j)=1 then (i,kj)=1⟺(i,k)=1

则原式就是:

∑k≤i,q≤j[(i,k)=1][(j,q)=1]

注意到:

φ(i)φ(j)=⎛⎝∑k≤i[(i,k)=1]⎞⎠⎛⎝∑k≤j[(j,k)=1]⎞⎠=∑k≤i,p≤j[(i,k)=1][(j,p)=1]=∑k≤i,p≤j[(i,k)=1][(j,p)=1]

则有:∀(m,n)=1,φ(mn)=φ(m)φ(n)。

因子个数函数

d(n)=∑i[i|n]

性质: d(i)=∏(pk(i)+1)。证明依赖唯一分解定理和乘法原理。其中pk(i)表示第k个素数在i的唯一分解中的幂次。

函数d与另一个函数e(n)密切相关,它被定义为n的最小素因子在唯一分解中的幂次。

下列性质给出了O(n)求解d函数的方法。

而e(i)的维护十分方便,因此可以得到:

  1. const int MAXN = 50005;
  2. int prime[MAXN], not_prime[MAXN], e[MAXN], d[MAXN], top = 0;
  3. void get_prime(int n)
  4. {
  5. e[1] = 0, d[1] = 1;
  6. for (int i = 2; i <= n; i++) {
  7. if (!not_prime[i]) { prime[++top] = i, e[i] = 1, d[i] = 2; }
  8. for (int j = 1; j <= top && prime[j]*i <= n; j++) {
  9. not_prime[prime[j]*i] = 1;
  10. if (i%prime[j] == 0) {
  11. d[prime[j]*i] = d[i]/(e[i]+1)*(e[i]+2);
  12. e[prime[j]*i] = e[i]+1;
  13. break;
  14. }
  15. e[prime[j]*i] = 1;
  16. d[prime[j]*i] = d[i]*d[prime[j]];
  17. }
  18. }
  19. for (int i = 1; i <= 20; i++)
  20. cout << d[i] << " ";
  21. puts("");
  22. }

莫比乌斯函数

μ(d)=[∀p,p(i)≤1](−1)∑p(i)

符号p(k)为k中蕴含素因子p的个数。

性质:

  1. 莫比乌斯函数是积性函数
  2. ∑d|nμ(d)=[n=1]
  3. (反演定理):
    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)
  4. 另一种形式的反演定理:
    F(i)=∑k≥1f(ki)⟺f(i)=∑k≥1μ(k)F(ki)

处理的技巧

参见:http://blog.csdn.net/oiljt12138/article/details/70188437

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注