L1-028 判断素数
L1-028 判断素数
L1-028 判断素数 - 团体程序设计天梯赛-练习集 (pintia.cn)
题解
素数概念:一个数如果只能被1和这个数本身整除,那么这个数就是素数。
并且1不是素数,2是素数。
因为题目中数最长位数是9位数,所以我用了long long来存储这个数。
1、读取输入
-
首先读取一个正整数
N
,它代表待判断的正整数的数量。 -
利用
while
循环N
次,每次循环读取一个待判断的正整数num
。
2、素数判断
-
特殊情况处理:
-
若
num
等于 1,由于 1 不是素数,直接输出No
。 -
若
num
等于 2,因为 2 是素数,直接输出Yes
。
-
-
一般情况处理:
-
设定一个标记变量
flag
并初始化为 1,表示假设该数是素数。 -
从 2 开始到 num 进行遍历(因为如果一个数
num
不是素数,那么它一定存在一个小于等于 num 的因子)。 -
若
num
能被当前遍历到的数i
整除,说明num
不是素数,将flag
设为 0 并跳出循环。
-
3、输出结果
-
依据flag的值输出结果:
-
若
flag
为 1,说明num
是素数,输出Yes
。 -
若
flag
为 0,说明num
不是素数,输出No
。
-
代码
#include<bits/stdc++.h>
long long num;
using namespace std;
int main(){int n;cin>>n;while(n--){cin>>num;if(num==1) cout<<"No"<<endl;else if(num==2) cout<<"Yes"<<endl;else{int flag=1;for(long long i=2;i<pow(num,0.5);i++){if(num%i==0){flag=0;break;}}if(flag) cout<<"Yes"<<endl;else cout<<"No"<<endl;}}return 0;
}