8 条题解

  • 5
    @ 2023-8-21 18:54:32

    判断质数,首先通过质数的定义,我们可以知道,质数只能被自己和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
      @ 2024-10-8 20:04:32

      #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
        @ 2024-12-9 8:34:40

        #include<stdio.h> int main() { int n,i,m,j; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&m); if(m2||m1)printf("YES\n"); else for(j=2;j<m;j++) { if(m%j0) { printf("NO\n"); break; } } if(jm)printf("YES\n"); } return 0; }

        • 0
          @ 2024-11-26 19:37:20

          #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
            @ 2024-10-6 13:17:40
            #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
              @ 2024-4-24 22:31:05
              #include <stdio.h>
              #include <math.h>
              int main()
              {
              	int t;
              	scanf("%d", &t);
              	while (t--)
              	{
              		int a,i=2,c=0;
                      scanf("%d",&a);
                      while (i<=sqrt(a))
                      {
                          if(a%i==0){c=1;break;}
                          i++;
                      }
                      if(a==1||c==1)printf("No\n");
                      else printf("Yes\n");
                  }
                  return 0;
              }
              //
              
              • 0
                @ 2023-10-2 11:13:39

                #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
                  @ 2023-8-26 15:50:55
                  #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
                  上传者