-
线性筛用途:快速的求范围 n n n 内的所有素数,其时间复杂度小于暴力求素数。
-
线性筛原理:具体见这里
程序模板:
bool isPrime[100000010];
int Prime[5000010], cnt=0;
void GetPrime(int n) {
memset(isPrime, 1, sizeof(isPrime));
isPrime[1] = 0;
for(int i = 2; i <= n; i++) {
if(isPrime[i])
Prime[++cnt] = i;
for(int j=1;j<=cnt&&i*Prime[j]<=n; j++) {
isPrime[i*Prime[j]] = 0;
if(i % Prime[j] == 0)
break;
}
}
}
//main函数第一行加上 GetPrime(n) n为范围
还有有疑问可以在此处寻找更多优秀文章或者在评论中提出哦~
另:线性筛的模板题练习:P3383