14 solutions

  • 5
    @ 2025-11-11 17:25:35
    
    解题报告
    
    撰写人:朱子轩
    
    题意分析
    
    质数是指在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数的自然数。现在需要编写一个程序,判断输入的数是否为质数。
    
    难度等级
    ★☆☆☆☆
    
    解题思路
    
    见到这个题,少不了筛素数的板子
    
    首先给大家介绍几个筛素数的板子
    1.根据定义:素数就是一个数除了1和他本身没有其他因数的数叫做质数。 于是我们对于一个n,可以可以从2枚举到n−1,从而判断这个数是不是质数。
    优化1:
    bool prime1(int x)
    {
    	if(x<2) return false;
    	if(x==2) return true;
    	for(int i=2;i<=x;i++)
    		if(x%i==0) return false;
    	return true;
    }
    
    我们不难发现n的因数是成对出现的,所以对于任何一个整数n,我们只需要从1枚举到根号下n就可以了。
    所以这个的时间复杂度就是O(根号下n)
    
    bool prime2(int x)//O(根号下n)
    {
    	if(x<2) return false;
    	if(x==2) return true;
    	for(int i=2;i<=sqrt(x);i++)
    		if(x%i==0) return false;
    	return true;
    }
    
    此方法的时间复杂度就大大减小,为O(三分之
    根号下n)
    
    bool quick_prime(int x)//O(三分之根号下n) 
    {
    	if(x==2||x==3) return true;
    	if(x%6!=1&&x%6!=5) return false;
    	for(int i=5;i<=sqrt(x);i+=6)
    		if(x%i==0||x%(i+2)==0) return false;
    	return true;
    }
    
    小结:在对于素数的判断时,一般用第一种的优化方法就可以了,但是如果遇到了毒瘤出题人,最好是用第二种方法。
    那本题的思路就出来了,先判断这个数是不是素数,
    
    ull prime(ull x){
    	if(x==2||x==3) return 1;
    	if(x%6!=1&&x%6!=5) return 0;
    	for(int i=5;i<=sqrt(x);i+=6)
    	if(x%i==0||x%(i+2)==0) return 0;
    	return 1;
    }
    ull simple_prime(ull k){
    	if(!prime(k)){
    	if(k%2!=0&&k%5!=0&&k%3!=0){
    		return 1;
    		}
    	}
    	return 0;	
    }
    if(prime(n)||simple_prime(n))
    {
    		if(n==1) cout<<"No<<endl;
    		else cout<<"Yes"<<endl;
    } 
    else cout<<"No"<<endl;
    
    cpp
    #include<bits/stdc++.h>
    using namespace std;
    typedef unsigned long long ll;
    ll p(ll x){
    	if(x==2||x==3) return 1;
    	if(x%6!=1&&x%6!=5) return 0;
    	for(int i=5;i<=sqrt(x);i+=6)
    	if(x%i==0||x%(i+2)==0) return 0;
    	return 1;
    }
    ll s(ll k){
    	if(!p(k)){
    	if(k%2!=0&&k%5!=0&&k%3!=0){
    		return 1;
    		}
    	}
    	return 0;	
    }
    int main()
    {
    	int n;
    	cin>>n;
    	if(p(n)||s(n))
    	{
    		if(n==1) cout<<"No"<<endl;
    		else cout<<"Yes"<<endl;
    	} 
    	else cout<<"No"<<endl;
    	return 0;
    }
    
    
    • 1
      @ 2025-11-18 13:05:44

      解题报告

      撰写人: 钟志杰

      题意分析

      这道题就是让我们求这个数是不是质数,这道题就要用求质数的方法了!

      难度等级

      ★☆☆☆☆

      解题思路

      这道题重点在于怎么判断质数,质数的判断方法如下:
      1.质数数不能是1,因为质数要求是只有2个因数,而1只有1个因数。
      2.质数只有2个因数。
      3(附加).如果这个数为2的倍数(除了2),那这个数就不是质数

      解题反思

      这道题就只是判断质数,很简单。

      参考程序

      #include<bits/stdc++.h>
      using namespace std;
      int n; 
      bool zs(int x){//判断质数函数
      	if(x<=1) return 0;//如果≤1就不是质数
      	if(x%2==0&&x!=2) return 0;//判断二的倍数(除了2)
          for(int i=3;i*i<=x;i+=2){//一个个试探
          	if(x%i==0) return 0;//如果这个数有别的倍数,就不是质数
          }return 1;//直到最后还没踢出去,就是质数
      }
      int main(){//主函数
          cin>>n;
          if(zs(n)) cout<<"Yes";
          else cout<<"No";
          return 0;
      }
      
      
      • 0
        @ 2025-11-11 17:27:17

        解题报告

        撰写人: 胡弘宣

        题意分析

        输入一个数,判断是否为质数

        难度等级

        ★★☆☆☆

        解题思路

        循环判断

        解题反思

        循环从2开始

        参考程序

        #include<bits/stdc++.h>
        using namespace std;
        int n,a=0;
        int main(){
            cin>>n;
            for(int i=2;i<n;i++)
            {
                if(n%i==0)
                {
                    cout<<"No";
                    a=1;
                    break;
                }
            }
            if(a==0)
            {
                cout<<"Yes";
            }
        
            return 0;
        }
        
        
        • -1
          @ 2025-11-18 16:47:11

          解题报告

          撰写人: 陈灏

          题意分析

          #602. 判断质数 质数是指在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数的自然数。现在需要编写一个程序,判断输入的数是否为质数。

          输入格式 一个整数n,其中2≤n≤1000000。

          输出格式 如果n是质数,输出 "Yes";否则输出 "No"。

          难度等级

          ★☆☆☆☆

          解题思路

          先定义和输出,再循环判断是不是质数然后输出Yes or No。

          解题反思

          参考程序

          #include<bits/stdc++.h>
          using namespace std;
          int main(){
              int n,c=1;
              cin>>n;
              for(int i=2;i<=n-2;i++){
                  if(n%i==0)c=0;
              }
              if(c==1)cout<<"Yes";
              else{cout<<"No";}
              return 0;
          }
          ```# 解题报告
          
          **撰写人:** 陈灏
          
          ## 题意分析
           #602. 判断质数 
          质数是指在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数的自然数。现在需要编写一个程序,判断输入的数是否为质数。
          
          输入格式
          一个整数n,其中2≤n≤1000000。
          
          输出格式
          如果n是质数,输出 "Yes";否则输出 "No"。
          
          ## 难度等级
          ★☆☆☆☆
          
          ## 解题思路
          先定义和输出,再循环判断是不是质数然后输出Yes or No。
          
          ## 解题反思
          无
          
          ## 参考程序
          
          ```cpp
          #include<bits/stdc++.h>
          using namespace std;
          int main(){
              int n,c=1;
              cin>>n;
              for(int i=2;i<=n-2;i++){
                  if(n%i==0)c=0;
              }
              if(c==1)cout<<"Yes";
              else{cout<<"No";}
              return 0;
          }
          
          • -1
            @ 2025-11-17 19:21:21
            解题报告:
            撰写人:李秉霖
            题意分析:
            这是一道简单的判断输入的数是否为质数的程序
            难度等级:
            ★☆☆☆☆
            解题思路:
            先利用bool类型然后再判断就可以了。
            解题反思:
            循环要从2开始
            参考程序:
            #include<bits/stdc++.h>
            using namespace std;
            int main() {
                int n;
                cin>>n;
                bool isPrime=true;
                for(int i=2;i*i<=n; i++){
                    if(n % i == 0){
                        isPrime=false;
                        break;
                    }
                }
                if(isPrime){
                    cout<<"Yes"<<endl;
                }else{
                    cout<<"No"<<endl;
                }
                return 0;
            }
            
            • -2
              @ 2025-11-18 16:56:26

              解题报告

              撰写人: 潘梓莹

              题意分析

              如果n是质数,输出 "Yes";否则输出 "No"

              难度等级

              ★☆☆☆☆

              解题思路

              解题反思

              参考程序

              #include<bits/stdc++.h>
              using namespace std;
              int n;
              int main() {
                  cin>>n;  
                  bool zs=true;  
                  for (int i=2;i*i<=n;i++) { 
                      if(n%i==0) {  
                          zs=false;  
                          break;  
                      }
                  }
                  if(zs) {
                  cout<<"Yes"<<endl;
                  } 
                  else {
                  cout<<"No"<<endl;
                  }
                  return 0;
              }
              
              
              • -3
                @ 2025-11-16 17:05:36

                解题报告

                撰写人: 朱梓霖

                题意分析

                问题描述:给定一个大于等于 2 的整数 n,判断它是否为质数。 质数的定义是:在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数。 输入格式: 一个整数 n。 输出格式: 如果 n 是质数,输出 "Yes";否则输出 "No"。

                难度等级

                ★★☆☆☆

                解题思路

                我们首先假设输入的数字 n 是一个质数,并用一个布尔变量 isPrime 来表示这个状态,初始值为 true。我们使用一个 for 循环来检查 n 是否有除了 1 和它本身之外的因数。循环变量 i 从 2 开始。循环的终止条件是 i * i <= n。这是一个优化点,因为一个数 n 的因数如果存在,那么其中一个必然小于或等于其平方根。检查到其平方根 就足够了,可以减少循环次数。在循环中,对于每一个 i,我们检查 n 是否能被 i 整除(即 n % i == 0)。如果找到了一个可以整除 n 的 i,这说明 n 不是质数。 循环结束后,根据 isPrime 的值进行判断。 如果 isPrime 仍然是 true,说明在整个循环过程中没有找到任何能整除 n 的数,因此 n 是质数,输出 "Yes",否则,输出 "No"。

                解题反思

                代码缩进的重要性:良好的代码缩进可以极大地提高代码的可读性。 逻辑严谨性:在编写条件判断和循环时,一定要仔细梳理每一步的逻辑。 测试是关键:写完代码后,不要只测试一两个简单的案例。

                参考程序

                #include<bits/stdc++.h>
                using namespace std;
                int main(){
                	int n;
                	bool isPrime=true;
                	cin>>n;
                	for(int i=2;i*i<=n;i++){
                		if(n%i==0)isPrime=false;
                		break;
                	}
                	if(isPrime){
                		cout<<"Yes";}
                		else{cout<<"No";}
                	return 0;}
                
                • -3
                  @ 2025-11-12 17:37:08

                  解题报告

                  撰写人: 梁倬菲

                  题意分析

                  判断一个数是指不是质数,如果是就输出"Yes",否则输出"No"。

                  难度等级

                  ★★☆☆☆

                  解题思路

                  先定义 2 个整数 n 和 t,t=0,输入 n,用for循环从 2 开始到 n-1 一个一个查找 n 的因数🔍,找到一个 t 就加一,最后判断 t 是否等于0,如果等于就输出"Yes",否则输出"No"。

                  解题反思

                  反思

                  参考程序

                  #include<bits/stdc++.h>
                  using namespace std;
                  int main(){
                      int n,ans=0;
                      cin>>n;
                      for(int i=2;i<=n-1;i++){
                          if(n%i==0)ans++;
                      }
                      if(ans==0)cout<<"Yes";
                      else cout<<"No";
                  
                      return 0;
                  }
                  
                  • -3
                    @ 2025-11-11 17:29:59

                    解题报告

                    撰写人: 陈天翊

                    题意分析

                    判断输入的数是否为质数,如果是输出 "Yes";否则输出 "No"。

                    难度等级

                    ★☆☆☆☆

                    解题思路

                    先判断这个数是不是质数,再输出"Yes"或"No"

                    参考程序

                    #include<bits/stdc++.h>
                    using namespace std;
                    int a,c=1;
                    int main(){
                        cin>>a;
                        for(int i=2;i<=a-1;i++){
                            if(a%i==0) 
                                c=0;    
                        }
                        if(c==1) {cout<<"Yes";}
                            else {cout<<"No";}
                        return 0;
                    }
                    
                    • -3
                      @ 2025-11-11 17:25:43

                      解题报告

                      撰写人: 陈斯伟

                      题意分析

                      质数是指在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数的自然数。现在需要编写一个程序,判断输入的数是否为质数。

                      难度等级

                      ★☆☆☆☆

                      解题思路

                      先判断,再输出

                      解题反思

                      : )

                      参考程序

                      #include<bits/stdc++.h>
                      using namespace std;
                      int main(){
                          int n;
                          bool a=0;
                          cin>>n;
                          for(int i=2;i<n;i++){
                           if(n%i==0)a=1;  
                          }
                          if(a==0)
                          cout<<"Yes";
                          else cout<<"No";
                          return 0;
                      }
                      
                      • -3
                        @ 2025-11-11 17:21:52

                        解题报告

                        撰写人: 陈沛宜

                        题意分析

                        判断这个数是不是质数

                        难度等级

                        ★☆☆☆☆

                        解题思路

                        先判断,再输出

                        解题反思

                        参考程序

                        #include<bits/stdc++.h>
                        using namespace std;
                        int main() {
                            int a;
                            cin>>a;  
                            bool isPrime=true;  
                            for (int i=2;i*i<=a;i++){  
                                if (a%i==0){
                                    isPrime=false; 
                                    break;  
                                }
                            } 
                            if (isPrime){  
                                cout<<"Yes"<<endl;  
                            } 
                        	else{
                                cout<<"No"<<endl;  
                            }
                            return 0;
                        }
                        
                        • -3
                          @ 2025-11-4 21:55:31

                          [视频讲解](https://www.yuque.com/benyao-60fk1/axxvmq/ir0uup8ea973z27l?singleDoc# 《判断质数》)

                          这是一道判断质数的题。质数是大于 1 的自然数,除了 1 和它自身外,没有其他因数。我们要编写程序判断输入的 2 到 1000000 之间的整数是否为质数,若是则输出 “Yes”,否则输出 “No”。

                          解题步骤如下:

                          1. 输入要判断的数 n,就像去超市要先明确买什么东西一样,这里就是明确要判断的对象。
                          2. 从 2 开始,到 n 的平方根为止,逐个尝试能否整除 n。若能被其中一个数整除,说明 n 除了 1 和它本身还有其他因数,就不是质数。比如判断 9,2 不能整除 9,但 3 能整除 9,所以 9 不是质数;判断 7,2 和 3 都不能整除 7,且 7 的平方根约为 2 点多,试到 2 即可,说明 7 是质数。至于为什么试到平方根,以 16 为例,它的因数 2 和 8、4 和 4,若一个因数大于平方根(16 的平方根是 4),另一个因数必然小于平方根,所以试到平方根就能涵盖所有可能的因数。
                          3. 根据判断结果输出 “Yes” 或 “No”。

                          对应的 C++ 代码如下:

                          #include<bits/stdc++.h>
                          using namespace std;
                          
                          int main() {
                              int n;
                              cin >> n;  // 输入要判断的数
                              bool isPrime = true;  // 先假设这个数是质数
                              for (int i = 2; i * i <= n; i++) {  // 从 2 开始试到 n 的平方根
                                  if (n % i == 0) {  // 如果 n 能被 i 整除
                                      isPrime = false;  // 说明 n 不是质数
                                      break;  // 不用再试后面的数了
                                  }
                              }
                              if (isPrime) {  // 如果还是假设的质数
                                  cout << "Yes" << endl;  // 输出 "Yes"
                              } else {
                                  cout << "No" << endl;  // 不是质数就输出 "No"
                              }
                              return 0;
                          }
                          

                          • -5
                            @ 2025-11-7 10:46:15

                            简单分析

                            🎯关键思路:根据质数的定义,质数是大于 1 且除了 1 和它自身外没有其他因数的自然数。我们可以从 2 开始到该数的平方根进行遍历,如果能被其中任何一个数整除,就不是质数。 ⚠易错点:要注意遍历范围到平方根即可,这样可以减少不必要的计算。同时,判断条件要准确,不能遗漏特殊情况。

                            详细解题报告

                            🌈题目

                            质数是指在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数的自然数。现在需要编写一个程序,判断输入的数是否为质数。 输入格式:一个整数 n,其中 2 ≤ n ≤ 1000000。 输出格式:如果 n 是质数,输出 "Yes";否则输出 "No"。

                            💡题意分析 这道题就是让我们根据质数的定义,判断输入的整数是不是质数,然后按照要求输出结果。

                            ⭐难度等级 ★★,对于小学生来说,理解质数的概念和实现判断逻辑有一定难度,但只要掌握方法,还是可以解决的。

                            🚀解题思路 我们可以用一个循环从 2 开始到该数的平方根进行遍历,如果这个数能被其中任何一个数整除,就说明它不是质数,输出 "No";如果都不能整除,就说明它是质数,输出 "Yes"。

                            💭解题反思 在解题过程中,要注意循环的范围,到平方根就可以了,这样可以提高效率。同时,要对质数的概念有清晰的理解,避免出现判断错误。

                            📝参考程序

                            #include<bits/stdc++.h>
                            using namespace std;
                            
                            int main() {
                                int n;  // 定义一个整数变量 n 用于存储输入的数
                                cin >> n;  // 从键盘读取输入的数
                                bool isPrime = true;  // 定义一个布尔变量 isPrime 用于标记是否为质数,初始化为 true
                                for (int i = 2; i * i <= n; i++) {  // 从 2 开始到该数的平方根进行遍历
                                    if (n % i == 0) {  // 如果该数能被 i 整除
                                        isPrime = false;  // 标记为不是质数
                                        break;  // 跳出循环
                                    }
                                }
                                if (isPrime) {  // 如果是质数
                                    cout << "Yes" << endl;  // 输出 "Yes"
                                } else {  // 如果不是质数
                                    cout << "No" << endl;  // 输出 "No"
                                }
                                return 0;
                            }
                            
                            • -6
                              @ 2025-11-11 17:21:31

                              解题报告

                              撰写人: Jacy

                              题意分析

                              质数是指在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数的自然数。现在需要编写一个程序,判断输入的数是否为质数。

                              输入格式 一个整数n,其中2≤n≤1000000。

                              输出格式 如果n是质数,输出 "Yes";否则输出 "No"。

                              难度等级

                              ★☆☆☆☆

                              解题思路

                              用for循环判断n的因子是否能被n整除,如果是则输出no终止程序,若不是则输出yes

                              解题反思

                              参考程序

                              #include<bits/stdc++.h>
                              using namespace std;
                              int n;
                              int main()
                              {
                                  cin>>n;
                                  for(int i=2;i<n;i++)
                                      if(n%i==0){
                                          cout<<"No";
                                          return 0;
                                      }
                                  cout<<"Yes";
                                  return 0;
                              }
                              
                              
                              • 1

                              Information

                              ID
                              602
                              Time
                              1000ms
                              Memory
                              256MiB
                              Difficulty
                              1
                              Tags
                              (None)
                              # Submissions
                              51
                              Accepted
                              39
                              Uploaded By