首先你要知道什么是歌德巴赫猜想,素数,键盘接收一个大于2的偶数,这个偶数必是两个素数之和比如:4=2+2,10=3+7并输出这两个素数 
有没有人能给个完整的程序代码

解决方案 »

  1.   

    思路:
    枚举出所有小于n的素数p1
    然后p2=n-p1,如果p2也是素数,输出p1,p2但是这个并不能证明哥德巴赫猜想
      

  2.   

    你的这个想法好象有问提,然后p2=n-p1,如果p2也是素数,输出p1,p2
      

  3.   

    public class Test40{
        public static boolean primeNum(int i){
            for(int j=2;j<Math.sqrt(i);j++)
                if(i%j==0) return false;
            return true;
        }
        public static void main(String[] args) throws Exception{
            if(args.length<1)
                System.out.println("Usage:A very easy programe!");
            int a=0;
            try{
            a=Integer.parseInt(args[0]);
            }catch(ArrayIndexOutOfBoundsException e){
                System.out.println("Warning:No command line arguments!");
            }catch(NumberFormatException e){
                System.out.println("Please enter a number!");
            }
            if(a%2==0){
                for(int i=1;i<a/2;i++)
                {
                    if(primeNum(i)&&primeNum(a-i))
                        System.out.println(a+"="+i+"+"+(a-i));
                }
            }
            else System.out.println("Please enter an even number!");
        }
    }
      

  4.   

    package test;import java.util.*;
    import java.io.*;
    import java.math.BigInteger;public class Test {
      public static final List<Integer> PRIME_LIST =
          new ArrayList<Integer>(Arrays.asList(2, 3, 5, 7, 9, 11, 13, 15, 17, 19,
                                               23, 29, 31, 37, 41, 43, 47, 49, 53, 
                                               59, 61, 67, 71, 73, 79, 83, 89, 97));  private static int currentMax = 97;  public static void main(String[] args) {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        String line;
        try {
          while (! (line = in.readLine()).equals("END")) {
            int number = 0;
            try {
              number = Integer.parseInt(line);
            } catch (NumberFormatException ex1) {
              System.out.println("Not a number!");
              continue;
            }        if (number <= 2 || number % 2 != 0) {
              System.out.println("Please input an even number that is over 2!");
              continue;
            }        searchPrimes(number);        int half = number >> 1;        for (int i = PRIME_LIST.get(0); i <= half; i++) {
              if (PRIME_LIST.contains(number - i)) {
                System.out.println(number + " = " + i + " + " + (number - i));
                break;
              }
            }
          }
        } catch (Exception ex) {
          ex.printStackTrace();
        }  }  private static void searchPrimes(int max) {
        if (max <= currentMax) {
          return;
        }    //其实这里应当用sieve,偷懒就用BigInteger了,反正那个PRIME_LIST可以用来作为sieve的依据
        for (; currentMax < max; currentMax++) {
          if (new BigInteger(currentMax + "").isProbablePrime(10)) {
            PRIME_LIST.add(currentMax);
          }
        }
      }
    }
      

  5.   

    yanxiazhiqiu(if the words don't come my way...) 你觉得你的代码对吗?你再机子上运行过了吗?
    而且我也不知道你的键盘接受是怎么接受的
    你是YATIAN 的吗
    是西安的吗
      

  6.   

    那你能给我说你是哪个公司的吗?还是去那个公司应聘过
    我运行了,你的代码不对
    参数加了,不对啊 
    你的QQ是多少,我M你
      

  7.   

    是错了,不好意思。j<=Math.sqrt(i)少了个等号。
      

  8.   

    public class Prime {
           private int first,second;
           private Prime(){
            first  = 0;
            second = 0;
           }
           private static Prime instance = new Prime();
           public static Prime getInstance(){
            return instance; 
           }
           public int getFirst(){
            return first;
           }
           public int getSecond(){
            return second;
           }
           public boolean Split(int arg0){
            if(!isEvenNumber(arg0)){
            return false;
            }
            for(int i=0;i<arg0/2;i++){
            if(isPrimeNumber(arg0/2+i)&&isPrimeNumber(arg0/2-i)){
            first  = arg0/2-i;
            second = arg0/2+i;
            return true;
            }
            }
            return false;
           }
           public boolean isEvenNumber(int arg0){
         if(arg0%2==0){
         return true;
         }else
         return false;
         }
         public boolean isPrimeNumber(int arg0){
         for(int i=2;i<=Math.sqrt(arg0);i++){
            if((arg0%i)==0){
          return false;  
            }
         }
         return true;
         }
           
    }