强伪素数的定义,如下: 则容易知道,满足条件的n有可能是素数也有可能是合数(强伪素数),但是不满足条件的一定是合数。我们又有以下定理
所以当返回为真时,它为合数错误的概率小于1/4,当返回为假时,必为合数,那么重复调用k次返回为真时,该数为合数的概率应该小于
1
4
k
\dfrac{1}{4^k}
4k1,只要k取10,错误概率就小于百万分之一。 整个代码如下:
#include
#include
#include
#include
using namespace std;
bool is_primes(int n){
if(n==1)
return false; //1不是素数
else{
for(int i=2;i
关注
打赏