本题的目标很简单,就是判断一个给定的正整数是否素数。
输入格式:
输入在第一行给出一个正整数N(<=10),随后N行,每行给出一个小于231的需要判断的正整数。
输出格式:
对每个需要判断的正整数,如果它是素数,则在一行中输出“Yes”,否则输出“No”。
输入样例:
2 11 111
输出样例:
Yes No
时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
陈越
注意:(1)题目要求需要输入的数是正整数,所以就要考虑1的情况,而1不是素数;
(2)判断一个数是素数时,只需从2遍历到这个数的平方根即可,只要出现一个被整除的数即可退出循环。这样就可以降低时间复杂度。
#include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int n; int i, j; int arr[10]; int flog = 0; scanf("%d", &n); if(n > 10 || n < 0) exit(0); for(i = 0; i < n; i++) { scanf("%d", &arr[i]); } for(i = 0; i < n; i++) { if(arr[i] == 1) printf("No "); else{ flog = 0; for(j = 2; j <= sqrt(arr[i]); j++) { if(arr[i]%j == 0) { flog = 1; break; } } if(flog == 1) printf("No "); else printf("Yes "); } } return 0; }