当前位置: 首页 > news >正文

快速分解质因数

这是普通的线性筛:

bool not_prime[MAXN + 10];
vector <int> prime;void get_prime() {for(int i = 2; i <= MAXN; i++) {if(!not_prime[i]) prime.pb(i);for(int j : prime) {if(1ll * i * j > MAXN) break;not_prime[i * j] = true;if(i % j == 0) break;}}
}

之所以线性筛的复杂度是线性的,是因为每个数只会被它的最小质因子筛掉一次。

这意味着我们可以在某一个数第一次被筛的时候记录它被谁筛了,即记录它的最小质因子:

int minn[MAXN + 10];
vector <int> prime;void get_prime() {for(int i = 2; i <= MAXN; i++) {if(minn[i] == 0) {minn[i] = i;prime.pb(i);}for(int j : prime) {if(1ll * i * j > MAXN) break;minn[i * j] = j;if(i % j == 0) break;}}
}

得到每个数的最小质因子之后就可以快速分解质因数。

具体地,想要分解一个数,只需不断除以它的最小质因子,并记录下质因子被除个数,直到为 \(1\)

while(k != 1) {cnt[minn[k]]++;k /= minn[k];
}
http://www.jsqmd.com/news/1359698/

相关文章:

  • 基于Openfire与WebRTC的企业级视频通信客户端开发实践
  • 智能体IDE视觉回归证据链工具:从输入校验到离线报告的完整实现
  • 智能体框架版本升级踩坑指南:从Hermes v0.19问题看自动化工具稳健实践
  • 对抗性雷达推理:MATLAB实现与智能干扰策略
  • Java演唱会订票系统开发:高并发处理与数据库设计
  • Unity战争迷雾系统:三脚本实现RTS游戏视野与探索机制
  • SameSite=Strict防御失效:从客户端重定向到CSRF攻击的实战剖析
  • SpringBoot智慧旅游系统开发与毕业设计实践
  • 利用Kimi K3低成本生成电影感网站:从提示词到部署全流程
  • AtCoder abc470 F - Googol Swaps
  • Bilibili-Evolved如何通过动态加载架构实现毫秒级响应优化?
  • 318川藏线包车多少钱?2026年包车费用明细+避坑FAQ全解析 - 老金2026
  • 从盲探到智搜:Advanced XRay如何重新定义Minecraft挖矿哲学
  • 3个步骤搞定B站视频下载:BilibiliDown小白也能轻松上手
  • 前端开发入门:从零完成第一个HTML/CSS作业
  • Visiaim AI绘画从零到精通:本地部署、提示词工程与实战案例全解析
  • AI编程助手Superpowers实战:从环境配置到工程化集成指南
  • TypeScript工具链优化:Turborepo与ESBuild实战
  • 9款降AIGC工具测评与学术写作优化指南
  • 支付宝消费券回收到底靠不靠谱?三个最扎心的问题,一次说透~~ - 京顺回收
  • 近视孩子的第一副防控镜,选施耐德乐优点MAX - 资讯报道
  • 终极窗口分辨率自定义工具:SRWE让你轻松掌控任意应用窗口
  • 智慧教育平台电子课本下载终极指南:3分钟学会高效获取教材PDF
  • 大模型提示矛盾消解追踪工具:从输入校验到离线报告的完整实现
  • Agentic RAG 深度实战
  • 2026年IRC协议演进:从复古聊天到现代实时数据同步的工程实践
  • GRE隧道承载OSPF路由的跨地域网络互联方案
  • 告别Office订阅烦恼:3分钟解锁Microsoft 365完整功能的终极方案
  • 高校学工系统实施全攻略:从选型到优化
  • 绝区零自动化实践:5分钟构建智能游戏助手方案