最近在牛客网上刷题偶然刷到了好题,刚开始以为只是普通的素数判断题型,运行后却卡了一下,觉得题目设计的很巧妙,想分享一下。
#题目描述
给你一个整数n, 判断它是否是素数。注意1不是素数。
#输入描述:
第一行输入一个整数T,表示需要判断的数的个数
接下来T行每行一个整数n,表示需要判断的数。
1<=n<=1e5,1<=T<=10
#输出描述:
输出T行,判断是否是素数。是,输出“Yes”,否则输出“No”
先贴上我的代码
#include<stdio.h>
int main(){
int T,n;
scanf("%d",&T);
while(T--){
scanf("%d",&n);
int flag=0;
if(n==1){
flag++;
}
for(int i=2;i<n;i++){
if(n%i==0){
flag++;
break;
}
}
if(flag==0){
printf("Yes\n");
}
if(flag!=0) {
printf("No\n");
}
}
}
我一开始卡在了代码每次只能判断一个数是否为质数,所以我加上了标记变量flag作为判断。当该整数为1或者有因子则flag!=0,最后再添加判断flag的数值。
这道题判断的个数取决于T的大小,所以加上判断条件为T自减到0即while(T–)。