mr求调
查看原帖
mr求调
523541
wdy1028楼主2022/1/8 17:01
#include <bits/stdc++.h>
typedef long long LL;
typedef unsigned long long ULL;
typedef long double LD;
#define ve vector
#define mem(arr,val) memset((arr),(val),(sizeof(arr)))
using namespace std;
const int INF = 0x7ffffff;
int t;
inline LL exp(LL a,LL m,LL n)
{
    if(!m) return 0;
    if(m == 1) return (a%n);
    LL w = exp(a,m/2,n);
    w = w*w%n;
    if(m&1) w = w*a%n;
    return w;
}
inline bool mr(LL n)
{
    if(n == 2) return true;
    for(int i = 0;i < 10;++i)
    {
        LL a = rand()%(n-2)+2;
        if(exp(a,n,n) != a) return false;
    }
    return true;
}
int main(int argc,char *argv[])
{
    scanf("%d",&t);
    while(t--)
    {
        LL n;scanf("%lld",&n);
        if(mr(n)) puts("YES");
        else puts("NO");
    }
    return 0;
}


2022/1/8 17:01
加载中...