全部评论 1

  • help qaq

    1周前 来自 广东

    0
    • #include <bits/stdc++.h>
      using namespace std;
      typedef long long ll;
      //#define ll int
      ll qmod(ll x,ll y,int m){
          ll res=1;
          x%=m;
          while(y){
              if(y&1) res=(res*x)%m;
              x=(x*x)%m;
              y>>=1;
          }
          return res;
      }
      bool witness(ll a,ll n){
          ll u=n-1;
          int t=0;
          while((u&1)==0) u>>=1,++t;
          ll x1,x2;
          x1=qmod(a,u,n);
          for(int i=1;i<=t;++i){
              x2=qmod(x1,2,n);
              if(x2==1 and x1!=1 and x1!=n-1) return true;
              x1=x2;
          }
          if(x1!=1) return true;
          return false;
      }
      bool miller_rabin(ll n,int s){
          if(n<2) return false;
          if(n==2) return true;
          if(!(n&1)) return false;
          for(int i=0;i<s and i<n;++i){
              ll a=rand()%(n-1)+1;
              if(witness(a,n)) return false;
          }
          return true;
      }
      vector<int>v;
      void init(){
          v.push_back(11);
          for(int i=1;i<=9;i+=2){
              v.push_back(i);
              for(int j=0;j<=9;++j){
                  v.push_back(i*100+j*10+i);
                  for(int k=0;k<=9;++k){
                      v.push_back(i*10000+j*100+k*100+j*10+i);
                      for(int o=0;o<=9;++o){
                          v.push_back(i*1000000+j*100000+k*10000+o*1000+k*100+j*10+i);
                      }
                  }
              }
          }
          sort(v.begin(),v.end());
      }
      inline int read(){
          int sum=0,f=1;
          char ch=getchar();
          while(ch<'0' or ch>'9'){
              if(ch=='-') f=-1;
              ch=getchar();
          }
          while(ch>='0' and ch<='9'){
              sum=(sum<<1)+(sum<<3)+(ch^48);
              ch=getchar();
          }
          return sum*f;
      }
      void write(int x){
          if(x>9) write(x/10);
          putchar(x%10+'0');
      }
      int main(void){
          init();
          srand(time(NULL));
          int a,b;
          a=read();
          b=read();
          for(int i=0;i<v.size() and v[i]<=b;++i){
              if(v[i]<a) continue; 
              int s=50;
              if(!miller_rabin(v[i],s)) continue;
              write(v[i]);
              puts("");
          }
      }
      

      1周前 来自 广东

      0
    • 不是……哥们……

      1周前 来自 广东

      0
首页