为什么这程序能求2-100素数?求求大神啊!
#include <iostream> #include <math.h>
using namespace std;
const int MAX=100; //定义常量MAX
int main()
{
int prime[MAX+100]={0}; //定义变量并初始化 定义prime[200]且里面每个都为0
int i,j,k=sqrt(MAX);
for(i=2;i<=k;i++) //枚举筛数 上行k=10 i就是2到10递增
{
if(prime[i]==0) //这里所有的数组都符合这条件,关键是下面的筛选
{
j=i*2; //将原数扩大二倍初始化给j 这里所有的j都能被i整除不是素数
do
{
prime[j]=1; //将j筛选掉 把数组里所有下标能被i整除的赋值1 不能整除的还是0
j+=i; //再扩大一倍
}
while(j<=MAX); //循环条件 j是2到100递增
}
}
for(i=2,j=0;i<=MAX;i++) // i是2到100递增
{
if(prime[i]==0) //循环输出 这里把上面不能整除的0的数组的下标输出
{
if(j%5==0) //一行输出5个数
cout<<"\n";
cout<<i<<" ";
j++;
}
}
cout<<endl;
return 0; //这程序经过测试确实能输出2到100的素数(也就是质数)
} //素数就是不能被2到本身的平方根整除
[ 本帖最后由 c10868 于 2013-9-7 00:41 编辑 ]