zoukankan      html  css  js  c++  java
  • 杜教筛小结

    写在前面

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

    前置知识

    积性函数

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

    积性函数:对于任意互质的整数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) ]

  • 相关阅读:
    jsp转向
    什么是 XDoclet?
    tomcat中的几点配置说明
    mysql5问题
    POJ 3734 Blocks
    POJ 2409 Let it Bead
    HDU 1171 Big Event in HDU
    POJ 3046 Ant Counting
    HDU 2082 找单词
    POJ 1286 Necklace of Beads
  • 原文地址:https://www.cnblogs.com/qrsikno/p/10110795.html
Copyright © 2011-2022 走看看