Sieve.cpp 395 B

1234567891011121314151617
  1. const int maxn = 10000005;
  2. const int maxp = 700000;
  3. int vis[maxn]; //0 for prime number
  4. int prime[maxp];
  5. void sieve(int n){
  6. int m = (int)sqrt(n+0.5);
  7. memset(vis, 0, sizeof(vis));
  8. for (int i = 2; i <= m, i++) if (!vis[i])
  9. for (int j = i*i; j <= n; j += i) vis[j] = 1;
  10. }
  11. int gen_primes(int n) {
  12. sieve(n);
  13. int c = 0;
  14. for (int i = 2; i <= n; i++) if (!vis[i])
  15. prime[c++] = i;
  16. return c;
  17. }