网上找了各种素数检测方法,对于大于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;
}
}
博客介绍了如何针对大于2^63以上的数,尤其是使用字符数组存储的大数,进行素数检测。作者提出了一种简单的方法,通过检查数字最后一位是否为1、3、7或9来初步判断,虽然无法检测伪素数,但能有效减少检测次数。
2808

被折叠的 条评论
为什么被折叠?



