• 线性筛

    • 埃氏筛

      • 对于每个数\(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_kx\),(\(pri_k \leq x\))筛去即可。
        • 证明:
        • 一个数\(x\)要被筛去,\(x\)必然是合数,\(x=ab\),\((a<b<x)\) ,令\(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}p_i^{r_i}\)

        • 直接套用积性函数的定义式\(\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)\begin{cases}1,x=1\\(-1)^k,x=\prod_{i=1}^kp_i\\0,x=\prod_{i=1}^kp_i^{r_i},\exist r_i>1\end{cases}\)
    • \(\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​\)

转载于:https://www.cnblogs.com/shjrd-dlb/p/10798239.html

线性筛及其扩展-积性函数相关推荐

  1. ACM-ICPC 2018 南京赛区网络预赛Sum,线性筛处理积性函数

    SUM 题意:f(n)是n可以拆成多少组n=a*b,a和b都是不包含平方因子的方案数目,对于a!=b,n=a*b和n=b*a算两种方案,求∑i=1nf(i) 首先我们可以知道,n=1时f(1)=1, ...

  2. facsum (线性筛 积性函数)

    facsum 10.20 思路: 对于式子进行分析,前面的Phi就是一个很常规的转化,变成i^m.后边一个约数个数,一个Mobius,一个单位函数都是积性函数,所以卷起来也就积性啦(不是积性怎么做嘛. ...

  3. 积性函数的性质及证明 + 线性筛

    引言 在数论问题中,积性函数有着广泛的应用. 如在莫比乌斯反演问题中,函数变换之后如何快速维护前缀和往往是最重要也是最难的一步.如果维护的函数具有积性,那就可以尝试利用线性筛在O(n)O(n)O(n) ...

  4. P6222 「P6156 简单题」(反演 + 积性函数线性筛)

    P6156 简单题 推式子 ∑i=1n∑j=1n(i+j)kf(gcd(i,j))gcd(i,j)=∑i=1n∑j=1n(i+j)kμ2(gcd(i,j))gcd(i,j)=∑d=1nμ2(d)dk+ ...

  5. 杜教筛(上):整除分块,积性函数,欧拉与莫比乌斯

    整除分块: 当我们求∑i=1nf(⌊ni⌋)\sum_{i=1}^nf(\lfloor\frac{n}{i}\rfloor)∑i=1n​f(⌊in​⌋)的时候,如果1到n求一遍感觉太傻了,因为会有很多 ...

  6. 欧拉心算(反演 + 积性函数筛)

    欧拉心算 推式子 ∑i=1n∑j=1nϕ(gcd(i,j))=∑d=1nϕ(d)∑i=1nd∑j=1nd[gcd(i,j)==1]=∑d=1nϕ(d)∑k=1ndμ(k)(⌊nkd⌋)2另t=kd=∑ ...

  7. Happy 2004(代码+积性函数扩展)

    Happy_2004 题意: 思路(详细解释在扩展): CodeCodeCode: 扩展(因子和,积性函数) nnn的全部因子之和是: 积性函数σ\sigmaσ Happy_2004 题意: 求200 ...

  8. 牛客 华华给月月出题 (积性函数+欧拉筛+快速幂)

    题目描述 华华刚刚帮月月完成了作业.为了展示自己的学习水平之高超,华华还给月月出了一道类似的题: ⊕符号表示异或和,详见样例解释. 虽然月月写了个程序暴力的算出了答案,但是为了确保自己的答案没有错,希 ...

  9. 《算法设计编程实验:大学程序设计课程与竞赛训练教材》——3.3 积性函数的实验范例...

    3.3 积性函数的实验范例 首先,我们必须弄清楚什么是积性函数: 在非数论领域,积性函数是指所有对于任何a和b都有性质f(ab)=f(a)f(b)的函数. 在数论领域,考虑一个函数值为正整数的函数f, ...

最新文章

  1. 使用google colab运行RNN网络代码报告错误ValueError: Object arrays cannot be loaded when allow_pickle=False
  2. kibana数据可视化
  3. solr的一些查询语法
  4. 施一公获百万科学界大奖!科研大牛如何炼成?
  5. ASP.NET MVC4 部分视图
  6. 零基础直接学Python入门IT合适吗?
  7. DataWindow修改的单元格文字颜色改变
  8. 商业需求分析(BRD)模板
  9. iOS开发:导入字体库
  10. Matlab画图技巧: 不需要敲代码的傻瓜式操作流程
  11. 要闻君说: 百度云喜提信息安全首证;紫光展锐携5G芯片进击2019MWC;OPPO首发5G手机惊艳亮相……...
  12. 上|中国股市九大伪元宇宙概念股
  13. IOS 制作app 预览视频
  14. MATLAB如何解决弹出路径不存在的问题
  15. 车载相机IQ调试策略
  16. ODBC、JDBC和四种驱动类型
  17. pytorch 定义torch类型数据_PyTorch 使用 TorchText 进行文本分类
  18. Histcite使用
  19. android ----- goldfish内核编译
  20. Notability work with acrobat pro dc

热门文章

  1. java中线程池的使用方法
  2. [Ruby on Rails]Rails 3使用ActionMailer通过163发送邮件
  3. 透过NpetShop 看Web项目开发中的分工合作
  4. 数组对象的过滤(取出一项中的某些字段)
  5. SQLAlchemy 简单笔记
  6. [BZOJ1026]windy数
  7. javascript中的字符串编码、字符串方法详解
  8. 局部内部类如何访问外部类方法中变量
  9. eclipce 快捷键
  10. js自动滚动条在底部