以下方法用于不能直接打表求素数时,用于判断素数的方法,效率依次递增
方法一:
bool isPrime(int n)
{
for (int i = 2;i*i <= n;++i)
if (n % i == 0)
return false;
return true;
}
方法二:
bool isPrime(int n)
{
if (n == 2) return true;
if (n % 2 == 0) return false;//如果n能被偶数整除,那么一定能被2整除
for (int i = 3;i*i <= n;i += 2)//剩下的只用判断能否被奇数整除即可
if (n % i == 0)
return false;
return true;
}
方法三:
bool isPrime(int n)//6素数法
{
if (n <= 3)
return n > 1;
if (n % 2 == 0 || n % 3 == 0)
return false;
for (int i = 5;i*i <= n;i += 6)//从i=5开始,每隔6个,只用判断能否被i和i+2整除即可,其他的都一定能被2或3整除
if (n%i == 0 || n % (i + 2) == 0)
return false;
return true;
}