伪模板链接:https://www.luogu.org/problemnew/show/P3327

线筛约数个数

约数个数的定义

为了格式,写了个这玩意儿。。。

这定义应该很清楚了,写个式子吧。。。

σ0(x)=∑d|x1σ0(x)=∑d|x1

\sigma_0(x)=\sum_{d|x}1

约数个数的性质

设x=pa11pa22...pannx=p1a1p2a2...pnanx=p_1^{a_1}p_2^{a_2}...p_n^{a_n}

那么有个大家耳熟能详的公式:

σ0(x)=(a1+1)(a2+1)...(an+1)σ0(x)=(a1+1)(a2+1)...(an+1)

\sigma_0(x)=(a_1+1)(a_2+1)...(a_n+1)

那么σ0(x)σ0(x)\sigma_0(x)的积性也是很显然的,博主就懒得证了。。。

这玩意儿仍然能跟数列求和扯上关系,放到后面讲。

约数个数的线筛

为了筛这玩意儿,我们还需要开另外一个数组num[i]num[i]num[i],记录iii的最小质因数的指数,之所以记录这个,是因为线筛有一个非常好的性质:每个数只会被它的最小质因数筛去

设T=i×p[j]" role="presentation" style="position: relative;">T=i×p[j]T=i×p[j]T=i\times p[j],接下来考虑线筛:

1.当TTT为质数时,显然T" role="presentation" style="position: relative;">TTT只有两个约数,111和它自己,最小质因数也只有它自己一个,所以此时σ0(T)=2,num[i]=1" role="presentation" style="position: relative;">σ0(T)=2,num[i]=1σ0(T)=2,num[i]=1\sigma_0(T)=2,num[i]=1;

2.当TTT拥有多个最小质因子(即i mod p[j]=0" role="presentation" style="position: relative;">i mod p[j]=0i mod p[j]=0i\ mod\ p[j]=0)时,那么TTT就比i" role="presentation" style="position: relative;">iii多了一个最小质因子,根据上面的公式就有σ0(T)=σ0(i)×num[i]+2num[i]+1σ0(T)=σ0(i)×num[i]+2num[i]+1\sigma_0(T)=\sigma_0(i)\times \frac{num[i]+2}{num[i]+1};

3.当TTT的最小质因子只有一个(即i mod p[j]≠0" role="presentation" style="position: relative;">i mod p[j]≠0i mod p[j]≠0i\ mod\ p[j]\ne 0)时,TTT比i" role="presentation" style="position: relative;">iii多了一个新的质因子,就有σ0(T)=2σ0(i)σ0(T)=2σ0(i)\sigma_0(T)=2\sigma_0(i)。

综上:

σ0(x)=⎧⎩⎨⎪⎪⎪⎪2σ0(i)×num[i]+2num[i]+12σ(i)T∈Primei mod p[j]=0i mod p[j]≠0σ0(x)={2T∈Primeσ0(i)×num[i]+2num[i]+1imodp[j]=02σ(i)imodp[j]≠0

\sigma_0(x)=\left\{ \begin{array}\\ 2&\\ \sigma_0(i)\times \frac{num[i]+2}{num[i]+1}&\\ 2\sigma(i)&\end{array}\right.

代码
void get()
{R i,j,t;miu[1]=d[1]=check[1]=1;for(i=2;i<=N;++i){if(!check[i])miu[i]=-1,d[i]=2,num[i]=1,p[++p[0]]=i;for(j=1;j<=p[0];++j){t=i*p[j];if(t>N)break;check[t]=1;if(i%p[j]==0){miu[t]=0;num[t]=num[i]+1;d[t]=d[i]/(num[i]+1)*(num[i]+2);break;}miu[t]=-miu[i],num[t]=1,d[t]=d[i]<<1;}d[i]+=d[i-1],miu[i]+=miu[i-1];}
}

[线筛五连]线筛约数个数相关推荐

  1. [数论]线性筛——约数个数与约数和

    参考博客 参考博客 参考博客 这个讲的挺好 预备知识点: 大于1的数n可以分解质因数: n=p1a1×p2a2×p3a3*-*pka n的约数的个数是(a1+1) * (a2+1) * (a3+1)- ...

  2. 【线性筛】【质因数分解】【约数个数定理】hdu6069 Counting Divisors

    d(x)表示x的约数个数,让你求(l,r<=10^12,r-l<=10^6,k<=10^7) #include<cstdio> using namespace std; ...

  3. 怎么区分五类线、超五类线和六类线

    打个广告, ---------------------------------------------------------------------------------------------- ...

  4. 【如何从外观上区分网线的五类线、超五类线和六类线?】

    五类线 线上写着CAT 5,传输带宽为100MHz,现在基本已经被超五类线替代. 超五类线 线上写着CAT 5e,传输带宽为1000Mb/s,已经可以支持POE技术.实际手感还是非常简陋. 六类线 线 ...

  5. 根据K线图与移动平均线的位置决定卖出点五绝招

    根据K线图与移动平均线的位置决定卖出点卖出信号一 此信号具有以下特征: 1.移动平均线呈大幅度上升趋势. 2.经过一段上升后,移动平均线开始走平. 3.当股价由上而下跌破走平的移动平均线时,便是卖出信 ...

  6. 北京地铁五号线全攻略 23座车站乘坐细节大起底

    5号线就在附近,偶尔出远门需要用到,但又对车站位置不熟悉,转此帖,备用 转自 http://news.xinhuanet.com/newscenter/2007-10/06/content_68370 ...

  7. 一步一步教你写股票走势图——K线图五(高亮联动二)

    目录 一步一步教你写股票走势图--分时图一(概述) 一步一步教你写股票走势图--分时图二(自定义xy轴) 一步一步教你写股票走势图--分时图三(对齐图表.自定义柱状图高亮) 一步一步教你写股票走势图- ...

  8. 超五类屏蔽双绞线和计算机电缆区别,五类线、六类线、超五类线的定义和区别...

    五类线的标识是"CAT5",带宽100M ,适用于百兆以下的网:超五类线的标识是"CAT5E",带宽155M,是目前的主流产品:六类线的标识是" CA ...

  9. 千兆网络中——使用五类线、超五类线和六类线的区别

    去年入手了一台Seagate的NAS,Central系列产品,3T存储空间.买回来后,一直没时间好好研究,直接插上就用了.内网速度一直维持在10M-15M左右.今年618换了款千兆路由器,速度瞬间提升 ...

  10. Pygame(五)画线

    Pygame(五)画线 前情提要 作业代码 import sys import pygame from math import pidef homework():pygame.init()screen ...

最新文章

  1. 程序员面试时,不小心说了真话…...
  2. Codeforces 1408 D. Searchlights(优化DP、思维)
  3. 优秀员工应该具备的11个特质
  4. 新手探索NLP(八)——序列标注
  5. java css是什么_Java 之 CSS
  6. 〖Windows〗Linux的Qt程序源码转换至Windows平台运行,编码的解决
  7. el-table数据不显示_数据透视表,一篇就够了
  8. Linux tee的花式用法和pee
  9. python测量血压_python距离测量的方法
  10. 多个python文件打包成exe_Python 3.4 .py文件打包成exe可执行文件方法
  11. Visual Studio 2013旗舰版KEY
  12. DataLoader worker (pid 2287) is killed by signal: Killed. pytorch训练解决方法
  13. linux设置定时重启任务
  14. 批量修改文件名.bat
  15. 三态门有一个信号控制端en_什么是三态门? 三态逻辑与非门电路以及三态门电路...
  16. 如何给php安装上pecl,PHP安装PECL扩展的方法
  17. Android 针对华为手机调用裁剪出现圆形裁剪框的处理
  18. 在钉钉如何愉快地给老师点很多赞
  19. 基于STM32智能窗帘
  20. 一个级数求和:看作二阶导,等比数列求和再求二阶导

热门文章

  1. Red-Detector扫描你EC2实例中的安全漏洞
  2. 快速突破面试算法之图篇
  3. springboot+easyui+jpa实现动态权限角色的后台管理系统(二)
  4. nginx 查看当前的连接数
  5. 数据结构算法基础定义
  6. Ubuntu 中搭建 LAMP 及 php 开发工具
  7. 用nginx转发请求tomcat 如何配置访问日志获取真实ip
  8. UUIDHexGenerator
  9. 线程上下文类加载器(Thread Context ClassLoader)
  10. Spring Cloud整合Seata实现2PC二阶段分布式事务