zoukankan      html  css  js  c++  java
  • 51nod 1106 质数检测(数论)

    基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
    收藏
    关注
    取消关注
    给出N个正整数,检测每个数是否为质数。如果是,输出"Yes",否则输出"No"。
     
    Input
    第1行:一个数N,表示正整数的数量。(1 <= N <= 1000)
    第2 - N + 1行:每行1个数(2 <= S[i] <= 10^9)
    Output
    输出共N行,每行为 Yes 或 No。
    Input示例
    5
    2
    3
    4
    5
    6
    
    Output示例
    Yes
    Yes
    No
    Yes
    No

    贴模板就行

      #include <iostream>
      typedef long long ll;
      using namespace std;
      int t;
      ll pow_mod(ll a,ll i,ll mod)
      {
          ll ans=1;
          while(i)
          {
              if(i&1)
                ans=ans*a%mod;
              a=a*a%mod;
              i>>=1;
          }
          return ans;
      }
      bool test(int n,int a,int d)
      {
          if(n==2)
            return true;
          if(n==a)
            return true;
          if((n&1)==0)
            return false;
          while(!(d&1))
            d=d>>1;
          int t=pow_mod(a,d,n);
          while((d!=n-1)&&(t!=1)&&(t!=n-1))
          {
              t=(long long)t*t%n;
              d=d<<1;
          }
          return (t==n-1||(d&1)==1);
      }
      bool is_prime(int n)
      {
          if(n<2)
            return false;
          int a[]={2,3,61};
          for(int i=0;i<=2;i++)
            if(!test(n,a[i],n-1))
            return false;
          return true;
      }
      int main()
      {
          ios::sync_with_stdio(false);
          cin>>t;
          while(t--)
          {
              int n;
              cin>>n;
              if(is_prime(n))
                cout<<"Yes"<<endl;
              else
                cout<<"No"<<endl;
          }
      }
    

      

     
  • 相关阅读:
    UDP——python网络编程笔记
    2018.7计划
    二叉树
    第7.5章:类——Cookbook笔记
    网络编程 Cookbook
    网络编程 csapp
    第5.5章 迭代器与生成器——CookBook笔记
    第3.5章 数据结构与算法——CookBook笔记
    关于排序
    关于搜索
  • 原文地址:https://www.cnblogs.com/onlyli/p/7274580.html
Copyright © 2011-2022 走看看