数组 筛法求素数
描述
筛法
mycode
# include <iostream>
# include <cstdio>
# include <math.h>
using namespace std;
# define NUM 100
int isprime [NUM];
int main()
{
for(int i=0;i<NUM;i++)
{
isprime[i]=1;
}
for(int j=2;j<NUM;j++)
{
for(int k=2;j*k<NUM;k++)
{
isprime[j*k]=0;
}
}
for(int i=2;i<NUM;i++)
{
if(isprime[i]==1)
{
cout<<i<<endl;
}
}
}
例题代码
# include <iostream>
# include <cstdio>
# include <math.h>
using namespace std;
# define NUM 100
bool isprime [NUM+10];//之所以用char,是因为int占8字节;char占一个字节,8个比特 ;isprime里只存放0或1,故也可用bool
int main()
{
for(int i=2;i<=NUM;i++)//素数从2开始,所以与0,1无关,设置isprime的值也从2开始
{
isprime[i]=true;
}
for(int j=2;j<=NUM;j++)
{
if(isprime[j]==1)
{
for(int k=2;k*j<=NUM;k++)
{
isprime[k*j]=false;
}
}
}
for(int i=2;i<NUM;i++)
{
if(isprime[i]==true)
{
cout<<i<<endl;
}
}
}