nlogn分解质因数 - SPF(目前以学习最快分解质因数)

构建最小质因数表spf
const int MAXN = 5000005;
int spf[MAXN]; // smallest prime factor

void init() {
for (int i = 2; i < MAXN; ++i) {
if (spf[i] == 0) {
for (int j = i; j < MAXN; j += i) {
if (spf[j] == 0) spf[j] = i;
}
}
}
}

每次除以最小质因数
vector get_factors(int x) {
vector res;
while (x > 1) {
int p = spf[x];
while (x % p == 0) {
res.push_back(p);
x /= p;
}
}
return res;
}
就能分解完质因数了

posted @ 2025-07-27 17:46  青一凡  阅读(22)  评论(0)    收藏  举报