求助费马素性测试
  • 板块学术版
  • 楼主liupan2010
  • 当前回复13
  • 已保存回复13
  • 发布时间2023/6/15 13:02
  • 上次更新2023/10/23 13:07:20
查看原帖
求助费马素性测试
875806
liupan2010楼主2023/6/15 13:02

看着书乱写的,然后无论测什么数都输出 NO,不知道拿出了问题。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,t;
ll read(){
    ll get=0,w=1;
    char c=getchar();
    while(c<'0'||c>'9') (c=='-')?w=-1:1,c=getchar();
    while(c>='0'&&c<='9') get=get*10+c-'0',c=getchar();
    return get*w;
}
void write(ll a){
    (a<0)?putchar('-'),a=-a:1;
    if(a>=10){
        write(a/10);
    }
    putchar(a%10+'0');
}
ll FastPow(ll a,ll b,ll Mod){
	ll Return=1;
	a%=Mod;
	while(b){
		(b&1)?Return=(Return*a)%Mod:1;
		b>>=1,a=(a*a)%Mod;
	}
	return Return;
}
bool Fermat(int Test,ll n){
	while(Test--){
		ll a=rand()%n+1;
		if(FastPow(a,n-1,n)!=1){
			return false;
		}
	}
	return true;
}
int main(){
	srand(time(NULL));
	t=read();
	while(t--){
		n=read();
		puts(Fermat(100,n)?"YES":"NO");
	}
	return 0;
}
2023/6/15 13:02
加载中...