這題可以用米勒-拉賓(MillerRabbin)演算法
附上關鍵程式碼(注意益位問題)
bool M_R(long long a,long long n){
long long d=n-1,r=0;
while(d%2==0)d/=2,++r;
long long k=pow(a,d)%n;
if(k==1)return true;
for(int i=0;i<=r;++i,k=k*k%n){
if(k==n-1)return true;
}
return false;
}
這題可以用米勒-拉賓(MillerRabbin)演算法
附上關鍵程式碼(注意益位問題)
bool M_R(long long a,long long n){
long long d=n-1,r=0;
while(d%2==0)d/=2,++r;
long long k=pow(a,d)%n;
if(k==1)return true;
for(int i=0;i<=r;++i,k=k*k%n){
if(k==n-1)return true;
}
return false;
}
電~~~~~~
這題可以用米勒-拉賓(MillerRabbin)演算法
附上關鍵程式碼(注意益位問題)
bool M_R(long long a,long long n){
long long d=n-1,r=0;
while(d%2==0)d/=2,++r;
long long k=pow(a,d)%n;
if(k==1)return true;
for(int i=0;i<=r;++i,k=k*k%n){
if(k==n-1)return true;
}
return false;
}
電~~~~~~
\電神教我写程式~~~/
這題可以用米勒-拉賓(MillerRabbin)演算法
附上關鍵程式碼(注意益位問題)
bool M_R(long long a,long long n){
long long d=n-1,r=0;
while(d%2==0)d/=2,++r;
long long k=pow(a,d)%n;
if(k==1)return true;
for(int i=0;i<=r;++i,k=k*k%n){
if(k==n-1)return true;
}
return false;
}
電~~~~~
電