代码:
#include<iostream>
#include<vector>
using namespace std;
int n=2000;
vector<bool>vis(n+1,true);//用来标记已经找到的合数
vector<int> prim;//保存已经找的的质数
int cnt=0;//保存找到的质数个数。
void init()
{
for(int i=2;i<n;i++)
{
if(vis[i])//当未标记为合数时,就是质数,因为他不能由前面比他小的数组成。
prim.push_back(i);
for(int j=0;j<prim.size();j++)
{
if(prim[j]*i>n)//当超过了范围就结束
{
break;
}
vis[prim[j]*i]=false;//将合数标记。
}
}
}
int main()
{
init();
for(int i=0;i<prim.size();i++)
{
cout<<prim[i]<<" ";
}
return 0;
}
解释:
我是小白
借鉴于: