4 条题解

  • 0
    @ 2026-10-22 2:07:43
    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<math.h>
    int main() {
    	int a =2,b,n;
    	scanf("%d",&n);
    	for (;a<=n/2;a++)
    	{
    		int A = 0, B = 0, i = 2;//大写字母代表对应小写字母是否是素数的真假
    		do {//要求比1大且比根号a(取整)小或等的数字不可以整除a,但是可能没有这样的数字
    			if (!((int)sqrt(a)-1))//讨论一下
    			{
    				A++;
    				break;
    			}
    			else
    				if (a % i == 0)
    					break;
    			if (i-1 == (int)sqrt(b)-1)//此处的i即是我昨天晚上所言的计数器
    			{
    				A++;
    				break;
    			}
    		} while (i++);
    		b = n - a;//然后同理判断b
    		i = 2;
    		do {//要求比1大且比根号b(取整)小或等的数字不可以整除b,但是可能没有这样的数字
    			if (!((int)sqrt(b) - 1))//讨论一下
    			{
    				B++;
    				break;
    			}
    			else
    				if (b % i == 0)
    					break;
    			if (i-1 == (int)sqrt(b)-1)
    			{
    				B++;
    				break;
    			}
    		} while (i++);
    		if (A && B)
    		{
    			printf("%d %d", a, b);
    			return 0;
    		}
    	}
    	return 0;
    }
    
    • 0
      @ 2025-11-20 18:32:26
      #include <iostream>
      #include <cmath>
      
      bool is_prime(int a)
      {
          if(a < 2) return false;
          if(a == 2) return true;
          if(a % 2 == 0) return false;
          
          for(int i = 3; i <= sqrt(a); i += 2)//对称法
          {
              if(a % i == 0) return false;
          }
          return true;
      }
      
      int main()
      {
          using namespace std;
          int n;
          cin >> n;
      
          for(int i = 2; i <= n / 2; i++) //对称法
          {
              if(is_prime(i) && is_prime(n - i))
              {
                  cout << i << " " << n - i << endl;
                  break;
              }
          }
          return 0;
      }
      
      • 0
        @ 2025-10-2 15:34:06

        题目不难,但是这里有个小方法不知道你知不知道。

        我们可以使用数组存储目前所有小于n的素数,之后用该数组中小于n的根号的数去作为因数去判断之后的数是否为质数。

        最后对应这道题,获得数组之后遍历即可(因为此方法获得的质数数组已经是升序排列了,无需再排

        #include<stdio.h>
        #include<string.h>
        #include<stdlib.h> 
        #include<math.h>
        int sss=0;
        int ss[1000];
        
        int isp(int n){
        	int i;
        	if(n<2) return 0;
        	for(i=0;i<sss&&ss[i]*ss[i]<=n;i++){
        		if(n%ss[i]==0){
        			return 0;
        		}
        	}
        	return 1;
        }
        
        void finds(int max){
        	int num;
        	for(num=2;num<=max&&sss<1000;num++){
        		if(isp(num)){
        			ss[sss]=num;
        			sss++;
        		}
        	}
        }
        
        int main(){
        	int n;scanf("%d",&n);
        	finds(n);
        	int i,j,found=0;
        	for(i=0;i<sss;i++){
        		if(ss[i]>n) break;
        		for(j=sss-1;j>=0;j--){
        			if(ss[j]>=n) continue;
        			if(ss[i]+ss[j]==n){
        				printf("%d %d",ss[i],ss[j]);
        				found=1;
        				break;
        			}
        			if(ss[i]+ss[j]<n) break;
        			}
        			if(found) break;
        		}
        	
        	return 0;
        }
        
        • 0
          @ 2024-11-10 11:50:15

          #include<bits/stdc++.h> using namespace std;

          bool judge(int x) { int flag=1;

          if(x==1||x<=0||x==4)
          	flag=0;
          else if(x==2||x==3)
          	flag=1;
          else
          {
          	for(int i=2; i*i<=x; i++)
          	{
          		if(x%i==0)
          		{
          			flag=0;
          		}
          	}
          }
          
          return flag;
          

          }

          int main() { int n;

          cin>>n;
          
          for(int i=3; 2*i<=n; i++)
          {
          	int x1=i,x2;
          	
          	if(judge(x1))
          		x2=n-x1;
          	
          	if(judge(x2))
          	{
          		cout<<x1<<" "<<x2; break;
          	}
          	else
          		continue;
          }	
          
          return 0;
          

          }

          • 1

          信息

          ID
          236
          时间
          1000ms
          内存
          256MiB
          难度
          3
          标签
          递交数
          394
          已通过
          216
          上传者