//方法1 #include <stdio.h> #include<math.h> int is_su(int n) { int m = 2; while(m<=sqrt(n))//避免n的值超出整形范围,取开根后计算 {if(n%m==0) return 0; else m++; } return 1; } int main() { int T = 0; int n[10] = {0}; int i = 1; scanf("%d",&T); while(i<=T) { scanf("%d",&n[i]); if(n[i]==1)//1的情况特殊不符合,单独举例 {printf("No\n"); i++; continue; } if(is_su(n[i])==1)//定义新函数,避免循环套循环太复杂。 printf("Yes\n"); else printf("No\n"); i++; } return 0; } //方法二 #include <stdio.h> int main() { int n, i, j,m; scanf("%d", &n); for (i = 0; i < n; i++) /*控制输入的循环次数*/ { scanf("%d", &j); for (m = 2; m <= j; m++) /*判断是否是素数*/ { if ((j % m) == 0) break; } if (j == m) /*判断标准就是m是否能够循环到j值,中途就停止循环说明是合数,最后才停说明是素数*/ printf("Yes\n"); else printf("No\n"); } return 0; }
第一种方法适用于n值较大,可能会超出整形范围的情况。
第二种方法适用于n值较小,不会超出整形范围的情况。