团体程序设计天梯赛——L1-028 判断素数
https://pintia.cn/problem-sets/994805046380707840/problems/994805106325700608
本题的目标很简单,就是判断一个给定的正整数是否素数。
输入格式:
输入在第一行给出一个正整数N(≤ 10),随后N行,每行给出一个小于231的需要判断的正整数。
输出格式:
对每个需要判断的正整数,如果它是素数,则在一行中输出Yes,否则输出No。
输入样例:
2
11
111
输出样例:
Yes
No
所谓素数就是除了1和它本身以外不能被其他数乘除的数,所以对于每一个数a[i],从2到a[i]-1不能有a[i]可以整除的数,但是如果判定条件写成"j<a[i]-1",那么恭喜你,测试点会超时,所以用sqrt(a[i])对数进行开方,缩小循环的范围就好了。最后用flag标志这个数是不是素数,输出Yes或者No。 (要注意2这个数)
#include<iostream>
#include<cmath>
using namespace std;
int main(){
int n,flag=1;
long int a[11];
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
for(int i=0;i<n;i++){
if(a[i]==1)
flag=0;
for(int j=2;j<=sqrt(a[i]);j++){
if(a[i]%j==0){
flag=0;
break;
}
}
if(flag==1||a[i]==2)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
flag=1;
}
}