首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
线性筛及其扩展-积性函数
时间:
2019-04-30 23:47:42
阅读:
162
评论:
0
收藏:
0
[点我收藏+]
标签:
代码
固定
欧拉
枚举
过程
直接
额外
复杂
函数
线性筛
埃氏筛
对于每个数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
线性筛及其扩展-积性函数
标签:
代码
固定
欧拉
枚举
过程
直接
额外
复杂
函数
原文地址:https://www.cnblogs.com/shjrd-dlb/p/10798239.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!