素数只有1和本身两个因子,申请一个数组,存储数据1 2 3 4….,将有两个因子以上的数置为零,剩下的就是素数,
#include <QCoreApplication>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
int range_max;//最大值
cout<<"请输入最大素数检测界限值:";
cin>>range_max;
int *num=new int[range_max+1];//申请内存
for(int i=0;i<=range_max;i++)//赋值
num[i]=i;
for(int j=2;j<=range_max;j++)//由大于2的值为一个因子
{
if(num[j]!=0)
{
for(int k=2;k*j<=range_max;k++)//由大于2的值为另一个因子
num[k*j]=0; //此值重新赋值为0
}
}
int count=0;//个数
for(int n=2;n<=range_max;n++) //输出范围内的所有素数
{
if(num[n]!=0)//不为0即为素数
{
cout<<num[n]<<" ";//输出素数
count++;
if(count%5==0) //5个数为一行
cout<<endl;
}
}
cout<<"素数个数为:"<<count<<endl;
delete []num;
num=NULL;
return a.exec();
}