考虑方程式:a^3 + b^3 = c^3 + d^3
其中:“^”表示乘方。a、b、c、d是互不相同的小于30的正整数。
这个方程有很多解。比如:
a = 1,b=12,c=9,d=10 就是一个解。因为:1的立方加12的立方等于1729,而9的立方加10的立方也等于1729。
当然,a=12,b=1,c=9,d=10 显然也是解。
如果不计abcd交换次序的情况,这算同一个解。
你的任务是:找到所有小于30的不同的正整数解。把a b c d按从小到大排列,用逗号分隔,每个解占用1行。比如,刚才的解输出为:
1,9,10,12
不同解间的顺序可以不考虑。

解决方案 »

  1.   

    最笨的方法:
    package test;
    public class Test {
    /**
     * @param args
     * @author shidanwo77
     * @描述 用循环判断并排序
     */
    public static void main(String[] args) {
    int a = 1,b = 1,c = 1,d=1;
    int ax=0,bx=0,cx=0,dx=0;
    //用循环判断是否符合条件
        for(a=1;a<30;a++)
        {
         for(b=1;b<30;b++)
         {
         for(c=1;c<30;c++)
         {
         for(d=1;d<30;d++)
         {
         if(a*a*a+b*b*b==c*c*c+d*d*d)
         {
         //如果符合条件排序
         ax=a;
         bx=b;
         cx=c;
         dx=d;
         for(int i=0;i<3;i++)
         {
         if(ax>bx)
         {
         ax=ax+bx;
         bx=ax-bx;
         ax=ax-bx;
         }
         if(bx>cx)
         {
         bx=bx+cx;
         cx=bx-cx;
         bx=bx-cx;
         }
         if(cx>dx)
         {
         cx=cx+dx;
         dx=cx-dx;
         cx=cx-dx;
         }
         }
         //打印排序后的结果
         System.out.println(ax+","+bx+","+cx+","+dx);
         }
         }
         }
         }
        }
    }
    }
      

  2.   

    楼主看这个!能用,需要优化。/*
     * 考虑方程式:a^3 + b^3 = c^3 + d^3 其中:“^”表示乘方。a、b、c、d是互不相同的小于30的正整数。
     * 这个方程有很多解。比如:
     */
    public static void TestNum2() {
    int a, b, c, d;
    List<String> list = new ArrayList<String>();
    for (a = 0; a < 30; a++) {
    for (b = 0; b < 30; b++) {
    for (c = 0; c < 30; c++) {
    for (d = 0; d < 30; d++) {
    if (a * a * a + b * b * b == c * c * c + d * d * d) {
    if (a != b && b != c && c != d && d != a && a != c
    && b != d) {
    int [] arr = {a,b,c,d} ;
    for(int i=0;i<arr.length;i++){
    for(int j=i+1;j<arr.length;j++){
    int temp= 0;
    if(arr[i]>arr[j]){
    temp = arr[i];
    arr[i] = arr[j];
    arr[j]=temp;
    }
    }
    }
    String s = arr[0]+","+arr[1]+","+arr[2]+","+arr[3];
    list.add(s);
    //System.out.println(s);
    //System.out.println(a + "," + b + "," + c + ","
    // + d+"------");
    }
    }
    }
    }
    }
    }
    for(int i = 0;i<list.size();i++){
    for(int j = i+1;j<list.size();j++){
    if(list.get(i).equals(list.get(j))){
    list.remove(j);
    j=i;
    }
    }
    System.out.println(list.get(i));
    }
    }