1.如何求1~N内的所有素数(埃拉筛法)
void init()
{
for(long long i=2;i<N;i++)
{
if(!v[i])
{
prime[p++]=i;
for(long long j=i*i;j<N;j+=i)
{
v[j]=true;
}
}
}
}
void GetPrime()
{
for(int i = 2; i <= 431; ++i)
Prime[i] = true;
for(int i = 2; i <= 431; ++i)
{
if(Prime[i])
{
for(int j = i+i; j <= 431; j+=i)
Prime[j] = false;
}
}
num = 0;
for(int i = 0; i <= 431; ++i)
if(Prime[i])
Primer[num++] = i;
}
线性筛法:
#include<cstdio>
const int N = 100000 + 5;
bool prime[N];//prime[i]表示i是不是质数
int p[N], tot;//p[N]用来存质数
void init(){
for