素数筛
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int MA=1005;
int prime[MA]; //保存判断结果,0为素数,1为合数
void isprime() //打表,判断0到1005中的素数
{
prime[0]=prime[1]=1;//0和1不是素数
prime[2]=0;
/*
从2开始,遍历到1005,如果这个数(i)是素数,那么
它所以的倍数都一定是合数(因为除了1和本身外还有其他因
数)。让 prime[这些i的倍数]=1。
*/
for(int i=2;i<MA;++i){
if(!prime[i]){
for(int j=i*2;j<MA;j+=j){
prime[j]=1;
}
}
}
}
int main()
{
isprime();
for(int i=0;i<1000;++i)
{
if(!prime[i])//如果 prime[i]==0 (即是素数),就输出。
cout<<i<<endl;
}
return 0;
}
第一次写,有错误请dalao指出,谢谢。