一些素数相关算法。
判断是否为质数
bool isPrime(int number)
{
int N = sqrt(MaxSize);
for(int i = 2; i < N; i++)
{
if(number%i == 0)
return false;
}
return true;
}
寻找1-n之间的所有素数——采用筛法
void findprime(int MaxSize)
{
vector<bool> primes(MaxSize,1); // 可用数组, 然后memset置为全1;
int N = sqrt(MaxSize);
for(int i = 2; i < N; i++)
{
if(primes[i])
{
for(int k = i*i; k < MaxSize; k += i) // 删除非合数,以免重复计算
{
primes[k] = 0;
}
}
}
for(int i = a; i < b; i++)
{
if(primes[i])
cout << i << endl;
}
}
目前看到这两个算法比较优。