考虑方程式: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
不同解间的顺序可以不考虑。
其中:“^”表示乘方。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
不同解间的顺序可以不考虑。
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);
}
}
}
}
}
}
}
* 考虑方程式: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));
}
}