求某個數範圍內的素數個數
阿新 • • 發佈:2019-01-07
素數只有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();
}