1 2 3 4 5 6 7 8 9 10 11 12 13 14
| namespace sieve{ const int maxp = 1000000 + 5; int vis[maxp], prime[maxp], tot; void init(){ ms(vis, 0); for (int i = 2; i < maxp; i++){ if (!vis[i]) prime[tot++] = i; for (int j = 0; j < tot && prime[j] * i < maxp; j++){ vis[i * prime[j]] = 1; if (i % prime[j] == 0) break; } } } }
|