当前位置: 代码迷 >> Java相关 >> 哥德巴赫猜想的验证问题
  详细解决方案

哥德巴赫猜想的验证问题

热度:294   发布时间:2008-11-08 17:00:38.0
哥德巴赫猜想的验证问题
在6-20之间的所有偶数验证哥德巴赫猜想:任何一个大于6的偶数可以分解为两个素数之和。
我的程序是把6-20之间的偶数用表达是表示出来,
如果我想最终输出的是如果6-20之间的所有偶数都分解,则返回true,否则返回false,该怎么做
public class TestPri
{
    static boolean flag=false;
    public static void main(String [] args)
    {
        for(int i=6;i<=20;i+=2)
        {
            flag=false;
outer1:        for(int a1=2;a1<=i-a1;a1++)
            {
                if(isPrime(a1)&&isPrime(i-a1))
                {
                    System.out.println(i+"="+a1+"+"+(i-a1));
                    flag=true;
                }
                if(flag==true)
                    break outer1;
            }            
        }        
    }
    static boolean isPrime(int i)
    {
        for(int k=2;k<i;k++)
        {
            if(i%k==0)
                return false;
        }
        return true;        
    }
    public TestPri()
    {
        
    }   
}
搜索更多相关的解决方案: 哥德巴赫猜想  验证  

----------------解决方案--------------------------------------------------------
不明白。。。。
----------------解决方案--------------------------------------------------------
乱写的,不知道是不是你说的那样.............
public class TestPri {
    public static void main(String[] args){
        IsPrime isprime=new IsPrime(6,20);
        isprime.judgeMent();
        System.out.println(isprime.flag);
    }
}

class IsPrime{
    int i,j;
    boolean flag=true;
    public IsPrime(int i,int j) {
        this.i=i;
        this.j=j;
    }
    public boolean judgeMent(){
        for(int x=i;x<=j;x+=2){
            for(int y=2;y<x-y;y++){
                if(this.isPrime(y)||this.isPrime(x-y))
                    System.out.println(x+"可分解为"+y+"+"+(x-y));
            }
        }
        return flag;
    }
    public boolean isPrime(int i){
        for(int a=2;a<i;a++){
            if(i%a==0)
                return false;
        }
        return true;
    }
}
----------------解决方案--------------------------------------------------------
上面的程序如果是用flag来判断是否正确的话,flag就已经定义为true了,肯定返回true,如果定义为false也会返回false.你的flag已经预先定义好了,而且输出的也是预先定义好的值,并没有进行过判断。
我的意思是判断如果6-20之间的数全部能分解为比它小的2个素数之和,则返回true,否则返回false.
----------------解决方案--------------------------------------------------------
偶是是不明白..
----------------解决方案--------------------------------------------------------
为什么要做for(int a=2;a<i;a++)
            if(i%a==0)
这样呢?可以直接if(i%2==0)吗?
----------------解决方案--------------------------------------------------------
  相关解决方案