如图
解决类似的问题的java代码,没有进行过代码优化,可以使用python的特性进行简单验证,比如:6**3==(3**3+4**3+5**3),该表达式可以直接输出验证结果,文中的代码因为使用Integer类型作为计算变量,我测试了一下,大概只能进行5000以内的计算,如果想要进行更大数的计算,则需要对代码中的计算变量类型进行替换,可以考虑BigInteger或者BigDecimal类型
package com.exam.swing.module;
import java.util.Scanner;
public class MathProof {
public static void main(String[] args) {
long millis = System.currentTimeMillis();
//验证等式: 一些相续正整数的立方和正好等于另一个整数的立方。
{
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数上限:");
int num = scanner.nextInt();
//计算该整数内所有数的立方和并存储在一个数组中
Integer arrResult[] = new Integer[num];
for (int i = 1; i <= num; i++) {
arrResult[i - 1] = i * i * i;
}
Integer result = 0;//获得连续的数的立方和
String str = "";//以字符串形式统计所用的数,形成一个表达式
for (int i = 1; i <= num; i++) {//最外层循环次数
for (int j = 1; j < num; j++) {//作为开始求和的最小值
//清空上次计算的结果
result = 0;
if (str.length() != 0) {
str = "";
}
for (int k = j; k < num; k++) {//最内层计算该数的组成
result += k * k * k;
str = str + "" + k + "^3" + "+";
if (result.equals(arrResult[i - 1])) {
int temp = k * k * k;
//再次判断是否是本身的立方,如果是本身的立方,则跳过
if (temp == arrResult[i - 1]) {
break;
}
//直接输出计算的结果
System.out.println("值" + arrResult[i - 1] + "," + i + "^3=" + str.substring(0, str.length() - 1));
break;
} else if (result > arrResult[i - 1]) {
//计算的结果大于要求,跳出循环
break;
}
}
}
}
long millis1 = System.currentTimeMillis();
System.out.println("计算所用时间:" + (millis1 - millis)+"毫秒");
}
}
}