哥德巴赫猜想的验证问题
在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)吗?
----------------解决方案--------------------------------------------------------