Eratosthenes筛法
memset(vis,0,sizeof(vis));
for(int i = 2; i <= n; i++)
for(int j = 2 * i; j <= n; j += i)
vis[j] = 1; //vis[j] = 1 表示 j 不是素数
欧拉筛
d = 0;
memset(flag, 0, sizeof(flag));
for (int i = 2; i <= n; i++) {
if (!flag[i])
primes[d++] = i;
for (int j = 0; i * primes[j] <= n; j++) {
flag[i*primes[j]] = true;
if (i % primes[j] == 0)
break;
}
}