素数筛选法-1

#include <iostream>
#include <algorithm>
#include <cstring>
#include <stdio.h>
using namespace std;
const int N=1001;
long long data1[N]={0},num_data1=0;//data1[]里存放所有的素数,num_data是素数的个数
int data2[N]={1,1};//0和1初始化为1表示为0、1都不是素数,其他数都初始化为0,假设一开始都为素数
int main()
{
for(long long i=2;i<N;i++)//从2开始筛选
{
if(!data2[i])//2初始化是0,所以满足
data1[num_data1++]=i;//如果满足则放在data1内
for(long long j=0;j<num_data1&&i*data1[j]<N;j++)//把已经归为素数的倍数筛选掉
{
data2[i*data1[j]]=1;
if(!(i%data1[j]))
break;
}
}
for(int i=0;i<num_data1;i++)
cout<<data1[i]<<endl;
return 0;
}

posted @ 2016-04-12 20:07  Wally的博客  阅读(138)  评论(0编辑  收藏  举报