Skip to Content
Team NoteAlgorithmLinearSieve-Mobius

LinearSieve-Mobius

const int MAX = 1e6; vector<int> primes, spf(MAX + 1, -1), mu(MAX + 1); void sieve() { mu[1] = 1; for (int i = 2; i <= MAX; i++) { if (spf[i] == -1) { primes.pb(i); spf[i] = i; mu[i] = -1; } for (int p: primes) { if (i * p > MAX) break; spf[i * p] = p; if (!(i % p)) { mu[i * p] = 0; break; } mu[i * p] = mu[i] * mu[p]; } } }
Last updated on