1 条题解
-
0
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
- 上传者