• 杜教筛小结


    写在前面

    杜教筛是一种快速求积性函数前缀和的算法。
    洲阁筛一起写在『积性函数求和的几种办法』这一篇论文中,
    有兴趣可以阅读一下。

    前置知识

    积性函数

    数论函数: 指定义域为正整数、陪域为复数的函数

    积性函数:对于任意互质的整数a和b有性质(f(ab)=f(a)f(b))的数论函数。

    完全积性函数:对于任意整数a和b有性质(f(ab)=f(a)f(b))的数论函数。

    常见的积性函数:

    φ(n) -欧拉函数

    μ(n) -莫比乌斯函数,关于非平方数的质因子数目

    gcd(n,k) -最大公因子,当k固定的情况

    d(n) -n的正因子数目

    σ(n) -n的所有正因子之和

    1(n) -不变的函数,定义为 1(n) = 1 (完全积性)

    Id(n) -单位函数,定义为 Id(n) = n(完全积性)

    ε(n) -定义为:若n = 1,ε(n)=1;若 n > 1,ε(n)=0。别称为“对于狄利克雷卷积的乘法单位”(完全积性)

    λ(n) -刘维尔函数,关于能整除n的质因子的数目

    摘自百度百科。

    性质:$ f(n) = f(prod_{p} p_i^{k_i}) = prod f(p_i^{k_i})$

    狄利克雷卷积:
    两个函数(f), (g), 他们的狄利克雷卷积为: ((f * g)(n) = sum_{d | n} f(d) imes g(frac{n}{d}))
    其满足交换律,结合律,分配率。
    (f),(g)是积性函数,那么(f∗g)也是积性函数。

    [1 * mu = varepsilon \ 1 * varphi = Id \ mu * Id = varphi ]

    然后就可以开始讲正题了:
    考虑三个函数,满足: $ f * g = h ( 记他们的前缀和:) f:F, g:G, h: H$
    那么:

    [H(x) = sum_{n = 1} ^ {x} h(n) \ = sum_n sum_ {d | n} f(d)g(frac{n}{d}) \ = sum_{d = 1}^{x} sum_{n = 1}^{lfloor frac{x}{d} floor} f(d)g(n)\ = sum_{d = 1}^{x} f(d) sum_{n = 1}^{lfloor frac{x}{d} floor} g(n)\ = sum_{d = 1}^{x} f(d)G(lfloor frac{x}{d} floor) \ = sum_{d = 1}^{x} g(d)F(lfloor frac{x}{d} floor) \ g(1)F(n) = H(n) - sum_{d = 2}^{x} g(d)F(lfloor frac{x}{d} floor) ]

    只要能快速求出H(n), g(d)(然后就可以(O(n ^ frac{2}{3})) 简单的求出(F(n)))

    Example:

    求$$sum_{i = 1}^{n} varphi(i) ~~ sum_{i = 1}^{n} mu(i)$$


    [sum_{n = 1}^{x} varphi(n) = frac{x * (x + 1)}{2} - sum_{i = 2}^{x}varphi(lfloor frac{x}{i} floor) \ sum_{n = 1}^{x} mu(n) = 1 - sum_{i = 2}^{x}mu(lfloor frac{x}{i} floor) ]

  • 相关阅读:
    爬虫
    Django
    python多线程
    python基础
    深度学习_1_Tensorflow_1
    人工智能_5_决策树_随机森林
    人工智能_4_k近邻_贝叶斯_模型评估
    人工智能_3_机器学习_概述
    Python re 模块
    Python函数式编程
  • 原文地址:https://www.cnblogs.com/qrsikno/p/10110795.html
Copyright © 2020-2023  润新知