WIKI
筛
欧拉筛
x=pα11pα22pα33…x=ijj∈primesj∈[p1,p2,p3…]i∈[pα1−11pα22pα33,pα11pα2−12pα33,pα11pα22pα3−13…]形如pα11pα2−12pα33,pα11pα22pα3−13会被p1筛掉时间复杂度可以保证在O(n)
code
constexpr int N = 1E7 + 10;
bool not_prime[N];
int prime[N], tot = 0;
for (int i = 2; i <= n; i++) {
if (!not_prime[i]) prime[++tot] = i;
for (int j = 1; j <= tot and i * prime[j] <= n; j++) {
not_prime[i * prime[j]] = 1;
if (i % prime[j] == 0) break;
}
}