思路:
任何一个大于3的素数都可以被写为6k±1的形式,因为6k+2=2(3k+1),6k+3=3(2k+1),6k+4=2(3k+2)。
注意充分与必要关系,能被写为6k±1形式的数不一定为素数。
代码:
bool isprime(int n){
if(n<=1) return false;
if(n==2||n==3) return true;
if(n%6!=1&&n%6!=5) return false;
for(int i=5;i*i<=n;i+=6) if(n%i==0||n%(i+2)==0) return false;
return true;
}