对于数据个数比较少的题目来说,求某一范围内的素数问题,可以直接用传统的枚举方法来判断即可。下面是怎么判断一个数是不是素数。
bool isPrime(int num)
{
if(num <= 1)
return false;
int sqr = (int)sqrt(num*1.0);
for(int i = 2; i <= sqr; i++)
{
if(num % i == 0)
return false;
}
return true;
}
bool isPrime(int num)
{/*第二种方法i容易溢出,所以用long long*/
if(num <= 1)
return false;
for(long long i = 2; i * i <= num; i++)
{
if(num % i == 0)
return false;
}
return true;
}
对于数据量比较大的时候,可以用埃氏筛法,下面是埃氏筛法代码:
// 求某一个范围内素数
int getPrime(int num)
{
memset(judge,true,sizeof(judge)); //将数组初始化为TRUE
int count = 0; //用来计算在0~num范围内素数的个数
for(int i = 2; i <= num; i++)
{
if( judge[i] &&