给出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; } }