Eular质数筛法 O(n)的素素筛选法

2019-04-14 16:40发布

#include #include #include using namespace std; int isPrim[1000010],primeList[1000010],primeCount=0; int main() { memset(isPrim,-1,sizeof(isPrim)); int N; while(cin>>N) { for(int i=2;i<=N;i++) { if(isPrim[i]==-1){ primeCount++; primeList[primeCount]=i; } for(int j=1;j<=primeCount;j++) { if(i*primeList[j]>N)break;//该树不在判断的范围 isPrim[i*primeList[j]]=0; if(i%primeList[j]==0)break; } } printf("%d ",primeCount); } }