以往大家判断素数的方法一般都是一下两种吧,我以前也是,就在昨天我看别人的题解时看到了另外一种方式,而且时间复杂度更低。那就是六素数法判断素数,特此给大家分享。
首先给大家复习一遍常规的两种办法:
方法一:
bool prime(int i)
{
for(j=2; j<=sqrt(i); j++)
if( i%j==0 ) return false;//不是素数
}
return true;//是素数就返回true;
方法二:
bool prime(int n){
for(int i=2;i<n;i++){
if(n%i==0)return false;
}
return true;
}
六素数法:
bool prime(int x){
if(x<=1)return false;
if(x==2||x==3||x==5)return true;
else if(x%2==0||x%3==0)return false;
for(int i=5;i<=sqrt(x);i+=6){
if(n%i==0||n%(i+2)==0)return false;
}
return true;
}