线性筛及其扩展-积性函数

Posted shjrd-dlb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线性筛及其扩展-积性函数相关的知识,希望对你有一定的参考价值。

  • 线性筛
    • 埃氏筛
      • 对于每个数x,枚举其倍数,将kx筛去。
      • 在埃氏筛过程中,每个数都会被筛掉多次,且对于每个数x,枚举其倍数的次数为\(\frac{n}{x}\)
      • 故埃氏筛的时间复杂度为\(\sum_{i=1}^{n}\)\(\frac{n}{i}\)=n\(\sum_{i=1}^{n}\)\(\frac{1}{i}\)=\(n ln(n)\)
    • 欧拉筛
      • 在埃氏筛中,每个数会被筛掉多次,想要进一步下降复杂度,我们要求每个数只会被筛一次。
      • 要想将多种筛去x的方法固定(唯一)。我们就要采用一种方法—“最小表示法”,套用在这里就是每个数被自己的最小质因子筛去。
      • 首先,为了优化时间复杂度,我们不难发现,并不需要对每个x,把每个x的所有倍数都筛一遍,只需要将\(pri_k\)x,(\(pri_k \leq x\))筛去即可。
        • 证明:
        • 一个数x要被筛去,x必然是合数,x=ab,(a<b<c) ,令a为质数,当我们用b筛时,一定能够筛去x=ab。
      • 然后我们要求每个数都被自己最小质因数筛去,则当我们用b筛时,设b的最小质因子为\(pri_b\),对于\(pri_i \leq pri_b\),我们筛掉\(pri_i b\)就是被自己的最小值因数\(pri_i\)筛去。
  • 常见积性函数
    • 欧拉函数(\(\varphi(x)\))
      • \(\varphi(x)\)为积性函数
      • \(\varphi(x)\)的两种计算式:
        • \(\varphi(x)\) = \(\varphi(a)\) . \(\varphi(b)\) (a,b互质)
        • \(\varphi(x)\) = x \(\prod_{i=1}^{k}\) (1-\(\frac{1}{p_i}\))
    • 套用欧拉筛筛法,每个数都被自己最小质因子筛去,就有两种情况:
      • 该数最小质因子pri的次数为1,即x=pri\(\sum_{i=2}^{k}pi^{ri}\)
        • 直接套用积性函数的定义式\(\varphi(x)\) = \(\varphi(pri).\varphi(\) \(\frac{x}{pri})\) (pri与\(\frac{x}{pri}\)互质)
      • 该数最小质因子pri的次数>1,即x= \(pri^{r_1} * \sum_{i=2}^{k} pi^{ri}\)
        • \(\varphi(x)\)的定义式知\(\varphi(x) = x \prod_{i=1}^{k} (1- \frac{1}{pi})\)
        • \(\frac{x}{pri}\)与x没有增加额外的质因子
        • 所以 \(\varphi(x) = pri * \frac{x}{pri} \prod_{i=1}^{k}(1- \frac{1}{pi})\) = \(pri *\varphi (\frac{x}{pri})\)
    • 代码
  • 莫比乌斯函数\(\mu(x)\)
    • \(\mu(x)\)定义式: \(\mu(x)\) = {}
    • \(\mu(x)\) =\(\mu(a)\)*\(\mu(b)\) (a,b互质)
    • 套用欧拉筛筛法
      • 当该数最小质因子pri,次数为1,同\(\varphi(x)\), \(\mu(x)\) =\(\mu(pri)\) . $\mu( $ \(\frac{x}{pri}\))
      • 当该数最小质因子pri,次数>1, \(\mu(x)\) = 0

以上是关于线性筛及其扩展-积性函数的主要内容,如果未能解决你的问题,请参考以下文章

线性筛

线性筛与积性函数

模版线性筛(素数,欧拉函数,莫比乌斯函数)

欧拉筛法(线性筛法)与解积性函数

关于欧拉函数与莫比乌斯函数等一系列积性函数的线性筛

积性函数,线性筛入门 HDU - 2879