1 条题解

  • 0
    @ 2025-10-10 15:45:27

    C :

    #include <stdio.h>
    
    int main()
    {
    	char s1[10] ; 
    	scanf("%s",s1) ;
    	int sum = 999999999 ;
    	
    	int length = 0 ;
    	for(int i=0;s1[i]!='\0';i++)
    	{
    		++length ; 
    	}
    	int FirstNumber = 0 ; 
    	
    	for(int i=0;FirstNumber+1<length;i++)
    	{
    		int x=0,y=0 ;
    		int shi = 1 ;
    		for(int j=0;j<FirstNumber;j++)
    			shi *= 10 ;
    		for(int j=0;j<=FirstNumber;j++)
    		{
    			x += (s1[j]-48) * shi ;
    			shi /= 10 ;
    		}
    		
    		shi = 1 ;
    		for(int j=FirstNumber+1;s1[j+1]!='\0';j++)
    			shi *= 10 ;
    		for(int j=FirstNumber+1;s1[j]!='\0';j++)
    		{
    			y += (s1[j]-48) * shi ;
    			shi /= 10 ;
    		}
    		++FirstNumber ;
    		
    		int sign = 0 ;
    		for(int j=2;j<x+y;j++)
    		{
    			for(int k=2;k<j;k++)
    			{
    				if((x+y)%k==0)
    				{
    					sign = 1 ;
    					break ;
    				}
    			}
    			if(sign==1)
    				break ;
    		}
    		
    		if(sign==0 && x+y<sum)
    		{ 
    			sum = x + y ;
    		}
    	}
    	if(sum==999999999)
    		printf("%d\n",-1) ;
    	else 
    		printf("%d\n",sum) ;
    	return 0 ;
    }
    

    C++ :

    #include <bits/stdc++.h>
    using namespace std;
    
    long long zhuanhuan(string s){
    	long long i,t = 1,n = 0;
    	for (i = s.size() - 1;i >= 0;i--){
    		n = n + (s[i] - 48) * t;
    		t = t * 10;
    	}
    	return n;
    }
    
    bool sushu(long long n){
    	bool f = true;
    	long long i;
    	for (i = 2;i <= sqrt(n);i++){
    		if (n % i == 0){
    			f = false;
    			break;
    		}
    	}
    	if (n == 1){
    		f = false;
    	}
    	return f;
    }
    
    int main(){
    	string s,s1,s2;
    	cin>>s;
    	long long i,a,b,min = 100000000;
    	//12345
    	for (i = 0;i < s.size() - 1;i++){
    		s1 = s.substr(0,i + 1);
    		s2 = s.substr(i + 1,s.size() - i - 1);
    		a = zhuanhuan(s1);
    		b = zhuanhuan(s2);
    		if (sushu(a + b) && a + b < min){
    			min = a + b;
    		}
    		//cout<<s1<<" "<<s2<<endl;
    	}
    	cout<<min;
    }
    

    Java :

    import java.util.Scanner;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		String n = sc.nextLine();
    		int[] a = new int[n.length()-1];
    		String x = "";
    		for(int i = 0 ;i < a.length;i++){
    			a[i] = Integer.parseInt(n.substring(0, i+1)) + Integer.parseInt(n.substring(i+1, n.length()));
    			if(suShu(a[i])){
    				x += a[i] +" ";
    			}
    			
    		}
    		
    			try {
    				String[] y = x.split(" ");
    				int min = Integer.parseInt(y[0]);
    				for(int i = 1;i < y.length;i++ ){
    					if(min > Integer.parseInt(y[i])){
    						min = Integer.parseInt(y[i]);
    					}
    				}
    				System.out.println(min);
    			} catch (NumberFormatException e) {
    				System.out.println( "-1");
    			}
    		
    	}
    	public static boolean suShu(int a){
    		boolean r = true;
    		for(int i = 2;i <= a / 2;i++){
    			if(a % i == 0){
    				r = false;
    				break;
    			}
    		}
    		if( a == 1){
    			r = false;
    		}
    		return r;
    	}
    }
    

    Python :

    import math
    def suShu(n):
       f=  True
       for i in range(2,int(math.sqrt(n)) + 1 ):
          if n % i == 0:
             f = False
             break
       return f and n != 1
    
    def chaiwei(n):
        min = 0  # min 存放2段之和最小的素数
        f = True  # 表示是否为第一次获取素数 
        for i in range(1,len(n)):
           x = int(n[0:i]) + int(n[i:])
           if suShu(x) :
              if f:
                 min = x;
                 f = False
              else:
                 if x < min:
                    min = x;
        return min
    
    n = input();
    r = chaiwei(n)
    if r == 0:
        print(-1)
    else:
        print(r)
    
    • 1

    信息

    ID
    123
    时间
    1000ms
    内存
    64MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者