//问题描述:求正整数n以内的所有素数.
//判断依据:如果这个正整数是1,则不是素数。如果一个正整数t能被2~√t其中的一个数整除的话,则t不是素数
#include <iostream>
#include <cmath>
using namespace std;
bool CheckPrime(int n) //判断一个数n是不是素数
{
if(n==1)
return false;
int tmp=sqrt((double)n);
bool isPrime=true;
for(int i=2; i<=tmp; ++i)
{
if(n % i==0)
{
isPrime=false;
break;
}
}
return isPrime;
}
int main()
{
int n; //正整数n
//输入正整数n
do
{
cout<<"输入正整数n:";
cin>>n;
if(n<1)
{
cout<<"必须输入正整数,请重新输入!"<<endl;
}
} while (n<1);
int counts=0; //素数的个数
cout<<n<<"以内的"<<"素数有:";
//输出n以内的素数,并统计素数个数后输出
if (n==1)
{
cout<<"1以内没有素数!"<<endl;
}
else
{
for(int i=2; i<=n; ++i)
{
if(CheckPrime(i)) //如果i是素数,则输出i,并且素数的个数加1.
{
cout<<i<<" ";
++counts;
}
}
cout<<endl;
cout<<n<<"以内有"<<counts<<"个素数"<<endl;
}
return 0;
}