Java 歌德巴赫猜想输出问题

许立 发布于 2013/02/07 11:48
阅读 274
收藏 0
public class Test
{
     	public static void main(String args[])
	{
	   for(int num=6;num<20;num++)
	   {
	     System.out.print("\n");
	     int sum=0;
	     for (int i=1;i<num/2;i++)
	     {//构造<num的质数
		boolean flag=false;
		if(i==2)//直接给出2是质数
		{
		flag=true;
		}
		for(int j=2;j<i;j++)
		{//判断i是否是质数
			if(i%j!=0)
			{
			flag=true;
			}
			else
			{
			flag=false;
			j=i;
			}
		}//判断i是否是质数
		   if(flag==true)
		   {//i是质数
			int num1=num-i;//迭代求num1
	     		for (int i1=i;i1<num1;i1++)
	     		{//构造<num1的质数
			  boolean flag1=false;
			  if(i1==2)//直接给出2是质数
			  {
			  flag1=true;
			  }
			  for(int j1=2;j1<i1;j1++)
			  {//判断i1是否是质数
				if(i1%j1!=0)
				{
				flag1=true;
				}
				else
				{
				flag1=false;
				j1=i1;
				}
			   }//判断i1是否是质数
				if(flag1==true)
		   		{//i1是质数
				  int i2=num1-i1;
				  boolean flag2=false;
				  if(i2==2)//直接给出2是质数
			  	  {
			          flag2=true;
			          }
				  for(int j2=2;j2<i2;j2++)
		   		  {//判断i2是否是质数
					if(i2%j2!=0)
					{
					flag2=true;
					}
					else
					{
					flag2=false;
					j2=i2;
					}
				  }//判断i2是否是质数
				  if(flag2==true)
				  {//i2是质数
				   sum++;
					if(sum%5!=0)
					{
					System.out.print(num+"="+i+"+"+i1+"+"+i2+"   ");
					}
					else
					{
					System.out.print("\n");
					}
				  }
		   	        }//i1是质数
			 }//构造<num1的质数
	              }//i是质数
	       }//构造<num的质数
	   }
	}
}

请问如何才能每行四个的输出。如何输出不重复的分解。谢谢

加载中
0
dreamers
dreamers

 我给个思路吧。

(1)每行四个输出:使用一个变量,统计已经输出的个数,如果为4则换行,然后再把该计数器置0;

(2)如何输出不重复:将表达式作比较,看看有没有重复的数字(不是按位置),只是单单是数字。比如:17=3+7+7, 17=7+7+3。他们的三个数字重复了,所以是同一个。

这个是我的简单想法不知道有没有更高效的方式,等楼下的。

返回顶部
顶部