首页 > 代码库 > Eratosthenes筛选法构造1-n 素数表

Eratosthenes筛选法构造1-n 素数表

筛选法:对于不超过n的每个非负整数p,删除2p,3p,4p...当处理完所有数之后,还没没删除的就是素数。

代码中进行了相应的优化。

 1 #include<bits/stdc++.h> 2 using namespace std; 3 int vis[10000]; 4 int main() 5 { 6     int n; 7     while(scanf("%d",&n)) 8     { 9         //--------------10         int m=sqrt(n+0.5);11         memset(vis,0,sizeof(vis));12         for(int i=2; i<=m; i++)13             if(!vis[i])14                 for(int j=i*i; j<=n; j+=i)15                     vis[j]=1;16         //---------------17         for(int i=2; i<=n; i++)18             if(!vis[i])19                 printf(" %d",i);20     }21 }

 

Eratosthenes筛选法构造1-n 素数表