zoukankan      html  css  js  c++  java
  • 【Template】Miller Rabin

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<iostream>
     4 #include<algorithm>
     5 #include<cmath>
     6 #include<vector>
     7 //#include<stack>
     8 #include<bitset> 
     9 #define R(a,b,c) for(register int (a)=(b);(a)<=(c);++(a))
    10 #define nR(a,b,c) for(register int (a)=(b);(a)>=(c);--(a))
    11 #define Ii inline int
    12 #define Iv inline void
    13 #define Il inline long long
    14 #define Ib inline bool
    15 #define INF 0x7ffffff
    16 #define re register
    17 #define ll long long
    18 #define Max(a,b) ((a)>(b)?(a):(b))
    19 #define Min(a,b) ((a)<(b)?(a):(b))
    20 #define Cmin(a,b) ((a)=(a)<(b)?(a):(b))
    21 #define Cmax(a,b) ((a)=(a)>(b)?(a):(b))
    22 #define Fill(a,b) memset((a),(b),sizeof((a)))
    23 #define D_e_Line printf("
    -------------
    ");
    24 #define D_e(x) printf("
    ______%d_______
    ",x)
    25 #define Pause() system("pause")
    26 using namespace std;
    27 Ii read(){
    28     int s=0,f=1;char c;
    29     for(c=getchar();c>'9'||c<'0';c=getchar())if(c=='-')f=-1;
    30     while(c>='0'&&c<='9')s=s*10+(c^'0'),c=getchar();
    31     return s*f;
    32 }
    33 template<class T>Iv print(T x){
    34     if(x<0)putchar('-'),x=-x;
    35     if(x>9)print(x/10);
    36     putchar(x%10^'0');    
    37 }
    38 int base[3]={2,7,61};
    39 ll Pow(ll a,ll b,ll mod){
    40     ll s=1;
    41     while(b){
    42         if(b&1)s=(s*a)%mod;
    43         a=a*a%mod,b>>=1;
    44     }
    45     return s%mod;
    46 }
    47 Ib Miller_Rabin(ll n){
    48     if(n==2||n==7||n==61)return 1;
    49     if(n<2||n%2==0||n%7==0||n%61==0)return 0;
    50     R(i,0,2){
    51         int flag=0;
    52         ll a=base[i];
    53         ll tmp=n-1;int k=0;
    54         while(tmp%2==0)
    55             ++k,tmp>>=1;
    56         ll x=Pow(a,tmp,n);
    57         if(x==1||x==n-1){flag=1;continue;}
    58         while(k--){
    59             x=x*x%n;
    60             if(x==n-1){
    61                 flag=1;break;
    62             }
    63         }
    64         if(!flag)return 0;
    65     }
    66     return 1;
    67 }
    68 int main(){
    69     int n=read(),T=read();
    70     while(T--){
    71         (Miller_Rabin(read())==1)?
    72             printf("Yes
    "):
    73             printf("No
    ");
    74     }
    75     return 0;
    76 }
    Miller Rabbin.cpp
  • 相关阅读:
    Java compiler level does not match the version of the installed Java Project facet.
    Project configuration is not up-to-date with pom.xml. Select: Maven->Update Project... from the project context menu or use Quick Fix.
    JavaScript
    JavaScript
    Eclipse
    Eclipse
    Oracle
    Java
    Ext JS 4.2
    Eclipse
  • 原文地址:https://www.cnblogs.com/bingoyes/p/10327881.html
Copyright © 2011-2022 走看看