网上找了各种素数检测方法,对于大于2^63以上的数都无效,尤其是用字符数组存储的大数,Miller_Rabin素数检测有long long的限制,所以干脆自己写一个凑合着用,没有检测伪素数的能力,但至少可以降低检测次数60%。原理就是只要是素数,最后一位一定是1、3、7、9。
//简单的大素数检测方法
int isprime(unsigned char* number){
char* h = number;
while( *h != '\0' ) h++;
char* f = h-1;
if( *f == '1' || *f == '3' || *f == '7' || *f == '9' ){
printf( "%s is prime\n",number );
return 1;
}else{
return 0;
}
}