• 从基础数论函数说起1:整除分块、数论函数、狄利克雷卷积


    本文内容:整除分块、几种常见的数论函数和狄利克雷卷积。

    整除分块

    在数论相关的题中,常常会遇到带有 (lfloorfrac{n}{i} floor) 求和的式子。而考虑到有很多 (i) ,它们的 (lfloorfrac{n}{i} floor) 都是一样的(最多 (lfloor2sqrt{n} floor) 个)。所以可以在 (O(sqrt{n})) 的时间内解决(如果剩下部分可以 (O(1)) 计算的话)。可以看下面的代码:

    for( int x = 1, y; x <= N; x = y + 1 ) {
        y = min( N / ( N / x ), M / ( M / x ) );
    }
    

    数论函数

    定义

    定义域为 正整数 的函数为 数论函数

    如果 (forall a,b,gcd(a,b)=1) ,有 (f(ab)=f(a)f(b)) ,则称这个函数是 积性函数 ,如果 (forall a, b) ,有 (f(ab)=f(a)f(b)) ,则称这个函数是 完全积性函数

    单位函数 (e(n)=[n=1]) 。(当 ([]) 中值为真时,取值为 (1) ,否则为 (0) 。) 是完全积性函数。

    幂函数 (id_k(n)=n^k) 。是完全积性函数。

    欧拉函数 (phi(n)=sumlimits_{i=1}^n[gcd(n,i)=1]) 。是积性函数。

    证明:

    (phi(n)=n-N)(phi(m)=m-M) 。(即 (n) 不为 (1) 的因子有 (N) 个, (m) 不为 (1) 的因子有 (M) 个。)那么 (nm) 不为 (1) 的因子有 (nM+mN-MN) 个(容斥原理)。

    (phi(nm)=nm-nM-mN+NM=phi(n)phi(m))

    除数函数 (sigma_k(n)=sumlimits_{d|n}d^k) 。或记为 (d(n), au(n)) ,是积性函数。

    证明:

    由于 (gcd(n,m)=1) ,那么 (forall a|n, b|m) ,都有 (gcd(a,b)=1) 。那么 (n) 的因数乘上 (b) 的因数是 (nm) 的因数,且不会重复。所以 (sigma_k(n)sigma_k(m)=sigma_k(nm))

    莫比乌斯函数 (mu(n)) 。当 (n) 有平方因子的时候 (mu(n)=0) 。否则 (mu(n)=(-1)^omega(n)) 。其中 (omega(n)) 表示 (n) 不同质因子的个数。

    证明平凡,略。

    狄利克雷卷积(Dirichlet 卷积)

    定义

    两个数论函数 (f,g) 的狄利克雷卷积定义为

    [(f*g)(n)=sumlimits_{d|n}f(d)g(frac{n}{d}) ]

    也可以写成这样:

    [(f*g)(n)=sumlimits_{ij=n}f(i)g(j) ]

    性质

    交换律: (f*g=g*f)

    结合律: ((f*g)*h=f*(g*h))

    单位函数为单位元: (f*e=f)

    分配律: (f*(g+h)=f*g+f*h)

    (f)(g) 都为积性函数时 (f*g) 也为积性函数。反过来, 若 (h=f*g) 为积性函数, (f) 为积性函数,那么 (g) 也为积性函数。

    证明:

    前面已经提到了,如果有 (gcd(n,m)=1,a|n,b|m) ,那么 (gcd(a,b)=1)

    [egin{aligned} (f*g)(n) imes (f*g)(m) &= sumlimits_{i_1j_1=n}f(i_1)g(j_1) imes sumlimits_{i_2j_2=m}f(i_2)g(j_2)\ &= sumlimits_{i_1i_2j_1j_2=nm}f(i_1)f(i_2)g(j_1)g(j_2)\ &= sumlimits_{ij=nm}f(i)g(j)\ &= (f*g)(n) end{aligned} ]

    两个等式

    [sigma_k=id_k * 1 ]

    证明:略

    [e=mu * 1 ]

    证明:

    (n)(k) 个不同的质因子,那么

    [sumlimits_{d|n} mu(d) = sumlimits_{i=0}^k (-1)^i imes {kchoose i} ]

    根据二项式定理, ((1-1)^k= sumlimits_{i=0}^k (-1)^i imes {kchoose i}=0^k)

    而由于 (mu(1)=1) ,所以 (mu * 1=e)

  • 相关阅读:
    linux下 yum 安装mysql和卸载
    Linux下怎么查看当前系统的版本
    linux下安装jdk+tomcat+eclipse+mysql
    JS获取浏览器名和版本信息
    Xshell与securecrt之间不同
    手把手教你使用Git
    leetcode 91 解码方法
    leetcode 88
    leetcode 70 爬楼梯
    leetcode 382 Linked List Random Node 链表随机节点
  • 原文地址:https://www.cnblogs.com/chy-2003/p/11831478.html
Copyright © 2020-2023  润新知