构建最小质因数表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
vector
while (x > 1) {
int p = spf[x];
while (x % p == 0) {
res.push_back(p);
x /= p;
}
}
return res;
}
就能分解完质因数了