尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

线性筛

线性筛
📅 发布时间:2026/7/19 19:03:42

线性筛

线性筛用于在 \(O(n)\) 的时间复杂度内快速求解积性函数的前 \(n\) 项。缺点明显,空间复杂度 \(O(n)\)。

常见函数的线性筛都是基于线性筛质数,以下从筛质数开始讲解。

原理

基本线性筛

从另一个熟悉的算法出发,埃氏筛法思路简单粗暴:枚举一个数的所有倍数,并将其标记为合数。

时间复杂度同样优秀,但依然会枚举很多重复元素。

相对于埃氏筛,线性筛的特点是,它确保每个合数只被它的“最小质因数”筛掉一次。

实现方法就是字面意思,枚举当前求出的所有质数,将这些质数 \(p\) 作为倍数去乘当前数 \(i\)。

那如何保证“最小质因数”呢?从小到大枚举 \(p\) 的时候,如果 \(p|i\) 则直接停止即可。

积性函数筛

欧拉函数

这时考虑与线性筛相似的一个问题:如何通过 \(\varphi(i)\) 求出 \(\varphi(i\times p)\) (\(p\) 为小于等于 \(i\) 的质数)。

分情况讨论:

  • \(p\mid i\):

    设 \(i=p^k\times m\quad(\gcd(m,p)=1)\):

    将 \(\varphi(i)\) 展开:

    \[\varphi(i)=\varphi(p^k\times m)=\varphi(p^k)\times \varphi(m)=p^{k-1}(p-1)\times\varphi(m)\tag1 \]

    将 \(\varphi(i\times p)\) 展开:

    \[\varphi(i\times p)=\varphi(p^{k+1}\times m)=\varphi(p^{k+1})\times\varphi(m)=p^k(p-1)\times\varphi(m)=p(p^{k-1}(p-1)\times\varphi(m))\tag2 \]

    将 \(1\) 式中的 \(p^{k-1}(p-1)\times\varphi(m)=\varphi(i)\) 代入 \(2\) 式:

    \[\varphi(i\times p)=p\times\varphi(i) \]

  • \(p\nmid i\):

    根据欧拉函数的积性:

    \[\varphi(i\times p)=\varphi(i)\times\varphi(p)=\varphi(i)\times(p-1) \]

莫比乌斯函数

依据莫比乌斯函数的定义:

\[\mu(n)=\begin{cases} 1\quad n=1\\ 0\quad \text{存在相同质因子}\\ (-1)^k\quad (k=\text{互异质因子数量}) \end{cases} \]

则分类讨论,对于当前枚举数 \(i\),枚举质因子 \(p\) 有:

  • 若 \(i\) 为质数,\(\mu(i)=-1\)。
  • 若 \(p\mid i\) ,由于原本就含有 \(p\) 质因子,现在多乘一个,\(\mu(i\cdot p)=0\)。
  • 若 \(p\nmid i\),现在是第一个 \(p\) 质因子,所以 \(\mu(i\cdot p) = -\mu(i)\)

实现

void init() {for (int i = 1;i <= maxn;i ++) book[i] = 1;book[0] = book[1] = 0;mu[1] = phi[1] = 1ll;for (int i = 2;i <= maxn;i ++) {if (book[i] == 1) {prime[++ pcnt] = i;mu[i] = -1,phi[i] = i - 1;}for (int j = 1;j <= pcnt && i * prime[j] <= maxn;j ++) {book[i * prime[j]] = 0;if (i % prime[j] == 0) { // p 为 i的最小质因子mu[i * prime[j]] = 0;phi[i * prime[j]] = phi[i] * prime[j];break;} else {mu[i * prime[j]] = -mu[i];phi[i * prime[j]] = phi[i] * (prime[j] - 1);}}}
}

\[ \]

相关新闻

  • 扬州邗江区邗上街道亨得利官方钟表服务中心电话公示(2026年7月最新) - 亨得利官方
  • 显卡内存健康检测:5分钟找出游戏闪退的元凶
  • Apple Silicon Mac搭建STM32开发环境全指南

最新新闻

  • 盐城亨得利售后服务中心专业手表维修保养权威公示(2026年7月最新) - 亨得利官方
  • 帝舵中国官方售后服务中心|详细地址与官方售后热线权威信息公示(2026年7月更新) - 帝舵中国官方服务中心
  • 2026年5月有实力的渐进多焦点眼镜专业门店优选,口碑与品质之选 - myqiye
  • 2026实测教程:动漫头像怎么转成拼豆图纸 - 省事研究所
  • 2026 年新消息:肥东比较好的压地机加工厂哪家强,别再用老方法!这台设备如何颠覆你的地面施工效率 - 企业推荐官【认证】
  • 2026年7月最新江诗丹顿南京雨花万象汇维修保养服务电话 - 江诗丹顿官方服务中心

日新闻

  • 百达翡丽官方服务项目及价格查询|维修地址与电话权威信息通告(2026年7月最新) - 百达翡丽服务中心
  • 2026年药食同源冲泡饮品哪家好:衡身堂三伏天内调外养 - 晚香时候
  • 芝柏官方更换原装表带价格查询|详细地址与24小时客服电话权威信息公告(2026年7月最新) - 亨得利官方服务中心

周新闻

  • SaaS软件行业GEO实践:AI搜索时代的品牌可见性与获客新路径
  • 什么是PCTFE?医药高端包装的“防潮王牌“材料
  • 【JVM调优实战】16-可视化利器-JConsole-VisualVM-JMC

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号