快速对一个数进行质因数分解(预处理可降低为log复杂度)
对一个数进行质因子分解的朴素做法是O(sqrt(n))的试除法
如果可以预处理出mindiv[i]数组,即每个数的最小质因子,则进行因式分解时,可以对数n,不断执行n/=mindiv[n],即可分解。
例题:https://ac.nowcoder.com/acm/contest/45670/E
(此例题中,min_div不取min,取任意一个质因子也可以)
题解:https://www.bilibili.com/video/BV1NP411c7TM/?p=4&spm_id_from=pageDriver&vd_source=75ae018f8d1181302d7ea76b60c928f4
模板:可以在埃氏筛法中直接记录:

int primes[N]; bool not_prime[N]; int min_div[N]; int cnt = 0; void get_primes(int n) { for (int i = 1; i < n; i++) { min_div[i]=i; } for (int i = 2; i < n; i++) { if (!not_prime[i]) { min_div[i]=i; primes[cnt++] = i; for (LL j = LL(i)*i; j <= n; j += i) {not_prime[j] = true;min_div[j]=min(i,min_div[j]);} } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)