题目描述:
本题的目标很简单,就是判断一个给定的正整数是否素数。
输入格式:
输入在第一行给出一个正整数N(<=10),随后N行,每行给出一个小于2^31的需要判断的正整数。
输出格式:
对每个需要判断的正整数,如果它是素数,则在一行中输出“Yes”,否则输出“No”。
输入样例:
2
11
111
输出样例:
Yes
No
老问题啦小兄弟儿,2^31表示打表就算了,就老方法优化一下即可
for(int i=2;i<=sqrt(a+1)&&flag;i++)
flag是一旦发现就退出循环
然后就是这个题因a==1还wa了一发,最后特判一下就可以了.
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<stack>
#include<set>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int Max_N=1000010;
int main(){
ios::sync_with_stdio(false);
int n;
ll a;
cin>>n;
while(n--){
cin>>a;
int flag=1;
for(int i=2;i<=sqrt(a+1)&&flag;i++){
if(a%i==0)
flag=0;
}
if(a==1)
flag=0;
if(flag)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}
兄弟 一定要仔细啊!