本题的目标很简单,就是判断一个给定的正整数是否素数。
输入格式:
输入在第一行给出一个正整数N(<=10),随后N行,每行给出一个小于231的需要判断的正整数。
输出格式:
对每个需要判断的正整数,如果它是素数,则在一行中输出“Yes”,否则输出“No”。
输入样例:
2 11 111
输出样例:
Yes No
注意:(1)题目要求需要输入的数是正整数,所以就要考虑1的情况,而1不是素数;
(2)判断一个数是素数时,只需从2遍历到这个数的平方根即可,只要出现一个被整除的数即可退出循环break。这样就可以降低时间复杂度,否则会显示运行超时的结果。
#include <iostream> #include <cmath> using namespace std; int judgment(int x) { if(x==1) return 0; int flag=1; for(int i=2;i<sqrt(x);i++) { if(x%i==0){ flag=0; break; } } return flag; } int main() { int n,p[10]; cin>>n; for(int i=0;i<n;i++) { cin>>p[i]; if(judgment(p[i])) cout<<"Yes "; else cout<<"No "; } return 0; }