题目描述
验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。
例如:
1^3=1
2^3=3+5
3^3=7+9+11
4^3=13+15+17+19
输入
多组输入,输入一个整数。
输出
输出分解后的字符串。
样例输入
6
样例输出
31+33+35+37+39+41
代码实现
import java.util.Scanner;
public class Main{
public static void fun(int n) {
if(n==1)
System.out.println(1);
//n的三次方赋值给m
int m = (int)Math.pow(n, 3);
//保存n个奇数和
int sum = 0;
for (int i = 1; i < (m / 2); i += 2)
//最小的奇数不会超过这个n^3的一半,1除外
{
int a = i;
sum = i;
//第一个就是i,然后还有n-1个奇数
for (int j = 1; j < n; j++)
{
a = a + 2;
//求出n个奇数和
sum += a;
}
//不等,则继续循环,下一个i
if (sum != m)
continue;
else {
//输出结果
for (int k = 0; k < n; k++) {
if (k == n - 1)
System.out.println(i + 2 * k);
else
System.out.print((i + 2 * k) + "+");
}
//得到结果,跳出循环
//写在主函数就会直接跳出多组循环
//所以写在自定义函数中较好
return;
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()) {
int n = sc.nextInt();
fun(n);
}
}
}