import java.util.Scanner;
import java.lang.Math.*;
class GeDe{                            public String getInput(){
                                                Scanner scanner=new Scanner(System.in);        //文本输入
                                                return scanner.next();
                                                }//Input()                            public int testNum(String s){                 //testNum验证输入的是否为合法的数字
                                                   int input=0;
                                                  while(true){
                                                              try                              //try catch进行纠错处理
                                                                 {
                                                                   input=Integer.parseInt(s);
                                                                   break;
                                                                  }catch(Exception ex)                       //若字符不合法,返回到scanner继续输入
                                                                       {
                                                                         System.out.println("数值不合法");
                                                                       }
                                                             }
                                                                         return input;
                                                  }//testNum()
                            public  void showUI(){                                          //显示简易控制界面
                                              System.out.println("******************");
                                              System.out.println("按1,回车输入");
                                              System.out.println("按其他键,回车退出");
                                              System.out.println("******************");
                                              }
                             public boolean isMoreFiveJi(int number){            //判断数是不是大于5的奇数
                                              if(number%2==1&&number>=5)
                                                  return  true;
                                              else
                                                  return  false;
                                            }
                             public  boolean is2more(int number){
                                     if(number%2==0&&number>2) return true;
                                     else
                                        return false;
                                       }//is2more                              public boolean isPrime(int number){                  //判断数是不是素数
                                              boolean flag=true;
                                              for(int i=2;i<=number-1;i++){                                                              if(number%i==0||number==1)
                                                              flag=false;
                                                        }
                                              return flag;
                                            }//isPrime
                             public void addTherePrime(int evennumber){
                                               for(int i=2;i<=(evennumber/2);i++){
                                           for(int j=2;j<=(evennumber/2);j++){
                                                            if(isPrime(i)&&isPrime(j)&&isPrime(evennumber-i-j))
                                                                 System.out.println(evennumber+"="+i+"+"+j+"+"+(evennumber-i-j));
                                                                            }
                                                                    }
                                                     }                             public  void addTwoPrime(int evennumber){
                                               for(int i=2;i<=(evennumber/2);i++){                                                            if(isPrime(i)&&isPrime(evennumber-i))
                                                                 System.out.println(evennumber+"="+i+"+"+(evennumber-i));
                                                                            }
                                                   }//addTwoPrime                                  }                           public class Goldbach{
                                        public static void main(String[] s){
                                        GeDe gede=new GeDe();
                                        GeDe gd=new GeDe();
                                        while(true){
                                                   gede.showUI();
                                                   if(gede.getInput().equals("1")){
                                                   System.out.println("请输入一个大于5的奇数:");
                                                   int m=gede.testNum(gede.getInput());                                                  if(gede.isMoreFiveJi(m)){
                                                    gede.addTherePrime(m);
                                                    continue;
                                                   }
                                                 else
                                                   System.out.println("输入的数不是大于5的奇数,不合法.请重新输入。");                                                  }                                                  gd.showUI();
                                                   if(gd.getInput().equals("1")){
                                                   System.out.println("请输入一个大于2的偶数:");
                                                    int n=gede.testNum(gede.getInput());
                                                   if(gede.is2more(n)){
                                                    gede.addTwoPrime(n);
                                                    continue;
                                                   }
                                                 else
                                                   System.out.println("输入的数不是大于2的偶数,不合法.请重新输入。");}                                                else System.exit(0);
                                                  }
                                             }                         }

解决方案 »

  1.   

    package com;import java.util.Scanner;public class Test {
    public static void main(String []args){
    Scanner scan=new Scanner(System.in);
    boolean flag=true;

    System.out.print("请输入大于5的整数:");
    int a=Integer.parseInt(scan.next());

    String[] strs=getZiShus(a).split(",");

    for(int i=0;i<strs.length;i++){
    for(int j=0;j<strs.length;j++){
    for(int k=0;k<strs.length;k++){
    int x=Integer.parseInt(strs[i]);
    int y=Integer.parseInt(strs[j]);
    int z=Integer.parseInt(strs[k]);
    //System.out.println("x:"+x+"y:"+y+"z:"+z);

    if(x+y+z==a){
    System.out.println("x="+x+"\ny="+y+"\nz="+z);
    flag=false;
    break;
    }
    }
    if(!flag){
    break;
    }
    }
    if(!flag){
    break;
    }
    }
    }

    public static String getZiShus(int a){
    String ziShus="";

    //判断2到数据a本身有多少个质数
    for(int i=2;i<=a;i++){
    boolean flag=true;
    for(int j=2;j<i;j++){
    if(i%j==0){
    flag=false;
    break;
    }
    }
    if(flag){
    ziShus+=i+",";
    }
    //System.out.println(ziShus);
    }
    ziShus=ziShus.substring(0,ziShus.length()-1);

    return ziShus;
    }
    }
    我没有验证。