[线筛五连]线筛约数个数
伪模板链接:https://www.luogu.org/problemnew/show/P3327
线筛约数个数
约数个数的定义
为了格式,写了个这玩意儿。。。
这定义应该很清楚了,写个式子吧。。。
\sigma_0(x)=\sum_{d|x}1
约数个数的性质
设x=pa11pa22...pannx=p1a1p2a2...pnanx=p_1^{a_1}p_2^{a_2}...p_n^{a_n}
那么有个大家耳熟能详的公式:
\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)。
综上:
\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的数n可以分解质因数: n=p1a1×p2a2×p3a3*-*pka n的约数的个数是(a1+1) * (a2+1) * (a3+1)- ...
- 【线性筛】【质因数分解】【约数个数定理】hdu6069 Counting Divisors
d(x)表示x的约数个数,让你求(l,r<=10^12,r-l<=10^6,k<=10^7) #include<cstdio> using namespace std; ...
- 怎么区分五类线、超五类线和六类线
打个广告, ---------------------------------------------------------------------------------------------- ...
- 【如何从外观上区分网线的五类线、超五类线和六类线?】
五类线 线上写着CAT 5,传输带宽为100MHz,现在基本已经被超五类线替代. 超五类线 线上写着CAT 5e,传输带宽为1000Mb/s,已经可以支持POE技术.实际手感还是非常简陋. 六类线 线 ...
- 根据K线图与移动平均线的位置决定卖出点五绝招
根据K线图与移动平均线的位置决定卖出点卖出信号一 此信号具有以下特征: 1.移动平均线呈大幅度上升趋势. 2.经过一段上升后,移动平均线开始走平. 3.当股价由上而下跌破走平的移动平均线时,便是卖出信 ...
- 北京地铁五号线全攻略 23座车站乘坐细节大起底
5号线就在附近,偶尔出远门需要用到,但又对车站位置不熟悉,转此帖,备用 转自 http://news.xinhuanet.com/newscenter/2007-10/06/content_68370 ...
- 一步一步教你写股票走势图——K线图五(高亮联动二)
目录 一步一步教你写股票走势图--分时图一(概述) 一步一步教你写股票走势图--分时图二(自定义xy轴) 一步一步教你写股票走势图--分时图三(对齐图表.自定义柱状图高亮) 一步一步教你写股票走势图- ...
- 超五类屏蔽双绞线和计算机电缆区别,五类线、六类线、超五类线的定义和区别...
五类线的标识是"CAT5",带宽100M ,适用于百兆以下的网:超五类线的标识是"CAT5E",带宽155M,是目前的主流产品:六类线的标识是" CA ...
- 千兆网络中——使用五类线、超五类线和六类线的区别
去年入手了一台Seagate的NAS,Central系列产品,3T存储空间.买回来后,一直没时间好好研究,直接插上就用了.内网速度一直维持在10M-15M左右.今年618换了款千兆路由器,速度瞬间提升 ...
- Pygame(五)画线
Pygame(五)画线 前情提要 作业代码 import sys import pygame from math import pidef homework():pygame.init()screen ...
最新文章
- 程序员面试时,不小心说了真话…...
- Codeforces 1408 D. Searchlights(优化DP、思维)
- 优秀员工应该具备的11个特质
- 新手探索NLP(八)——序列标注
- java css是什么_Java 之 CSS
- 〖Windows〗Linux的Qt程序源码转换至Windows平台运行,编码的解决
- el-table数据不显示_数据透视表,一篇就够了
- Linux tee的花式用法和pee
- python测量血压_python距离测量的方法
- 多个python文件打包成exe_Python 3.4 .py文件打包成exe可执行文件方法
- Visual Studio 2013旗舰版KEY
- DataLoader worker (pid 2287) is killed by signal: Killed. pytorch训练解决方法
- linux设置定时重启任务
- 批量修改文件名.bat
- 三态门有一个信号控制端en_什么是三态门? 三态逻辑与非门电路以及三态门电路...
- 如何给php安装上pecl,PHP安装PECL扩展的方法
- Android 针对华为手机调用裁剪出现圆形裁剪框的处理
- 在钉钉如何愉快地给老师点很多赞
- 基于STM32智能窗帘
- 一个级数求和:看作二阶导,等比数列求和再求二阶导