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

时间:2021-03-06 21:03:55

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

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

本代码功能,输入一个数,输出从1-该数之间的素数。功能待完善,可将所有素数存放到vis数组中。int k=0;vis[k++]=j;//待验证

 #include<bits/stdc++.h>
using namespace std;
int vis[];
int main()
{
int n;
while(scanf("%d",&n))
{
//--------------
int m=sqrt(n+0.5);
memset(vis,,sizeof(vis));
for(int i=; i<=m; i++)
if(!vis[i])
for(int j=i*i; j<=n; j+=i)
vis[j]=;
//---------------
for(int i=; i<=n; i++)
if(!vis[i])
printf(" %d",i);
}
}