8 条题解
-
5
判断质数,首先通过质数的定义,我们可以知道,质数只能被自己和1整除。 假设一个整数n.我们通过把n分解为两个数相乘的形式,把第一个因子从小到大排序后。可以发现等式关于sqrtn * sqrtn对称。所以我们可以从2-sqrtn 进行for循环遍历一遍判断即可。 本题数据没有1,所以代码可以过,有1 的情况下要特判。
#include <stdio.h> #include <math.h> int main() { int t; scanf("%d", &t); while (t --) { int n; scanf("%d", &n); bool flag = 0; for (int i = 2; i <= sqrt(n);i ++) { if (n % i == 0) { flag = 1;// 表示有其他因子,即不是质数。 break; } } if (flag) { printf("No\n"); } else { printf("Yes\n"); } } }
-
1
#include <stdio.h> #include <math.h> int main() { int q; scanf("%d", &q); while (q--) { int n, i; scanf("%d", &n); if (n == 1) { printf("No\n"); break; } int flag = 1; for (i = 2; i <= sqrt(n); i++) { if (n % i == 0) { flag = 0; break; } } if (flag) { printf("Yes\n"); } else { printf("No\n"); } } return 0; }
-
0
#include<stdio.h> int zhi(int n){ if(n<=1)return 1; for(int i=2;i*i<=n;i++){
if(n%i==0){ return 1; }else return 0; } return 0;
} int main(){ int Q,i; scanf("%d",&Q); int a[Q]; for(int i=0;i<Q;i++){ scanf("%d",&a[i]); } for(i=0;i<Q;i++){ if(zhi(a[i])==1){ printf("No\n"); }else{ printf("Yes\n"); } } return 0; }
-
0
#include<stdio.h> #include<math.h>//引用math头文件,因为要使用sqrt(a)函数求a的平方根来降低时间复杂度 //具体为什么要使用平方根不懂得搜索网址(https://zhuanlan.zhihu.com/p/137177578) int main(){ int i,n,j,a,b; scanf("%d",&n); for(i = 1;i <= n;i++){ b = 0;//注意循环开始b要初始化 scanf("%d", &a); for(j = 2;j <= sqrt(a);j++){ if(a % j == 0){b = 1;printf("No\n");break;} } if(b == 0){printf("Yes\n");} } return 0; }
-
0
#include <stdio.h>
int main() { int arr[1000000]; int i, j, n; while(scanf("%d", &n) != EOF) { for(i = 0; i < n; i++) { scanf("%d", &arr[i]); } // 将数导入数组; // 把n个数提取出来 for(i = 0; i < n; i++) { // 判断1情况 if(arr[i] <= 1) { printf("No\n"); continue; } if(arr[i] == 2) { printf("Yes\n"); continue; } // 将arr[]遍历 for(j = 2; j * j <= arr[i]; j++) { // 如果没余数 if(arr[i] % j == 0) { printf("No\n"); break; } } // 如果上述循环结束仍未输出"No",则arr[i]为素数 if(j * j > arr[i]) { printf("Yes\n"); } } } return 0; }
-
0
#include<stdio.h> int main() { int n,Q=0,q[Q+5],i,s=1; scanf("%d",&Q); for(n=0;n<Q;n++) { scanf("%d",&q[n]); } for(n=0;n<Q;n++) { if(q[n]==1) printf("No\n"); if(q[n]==2) printf("Yes\n"); if(q[n]>3) { while(s*s<=q[n]) s++; for(i=2;i<=s;i++) { if(q[n]%i==0) { printf("No\n"); break; } else if(i==s) printf("Yes\n"); } } } return 0; }
- 1
信息
- ID
- 50
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 8066
- 已通过
- 861
- 上传者