筛法构造1~n的素数表

 

#include <iostream>
#include <cmath>
#define Ni 10000000
using namespace std;
int prime[Ni];
bool vis[Ni];
int Prime(int n)//筛法构造1~n的素数表(反回有多少个素数)
{
    int i,j,c=0;
    memset(vis,0,sizeof(vis));
    for(i=2;i<=n;i++) if(!vis[i])
    {
        prime[c++]=i;
        for(j=i*i;j<=n;j+=i) vis[j]=1;
    }
    return c;
}
int main()
{
    int i,n,m;
    cin>>n;
    m=Prime(n);
    for(i=0;i<m;i++)
    {
        cout<<prime[i]<<' ';
    }
    cout<<endl;
}

 

posted @ 2012-03-07 16:40  qijinbiao1  阅读(407)  评论(0编辑  收藏  举报