题目描述
验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。
例如:
1^3=1
2^3=3+5
3^3=7+9+11
4^3=13+15+17+19
输入描述:
输入一个int整数
输出描述:
输出分解后的string
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext())
{
int n = scanner.nextInt();
StringBuffer sb = new StringBuffer();
int mid = n * n;
if (mid % 2 == 1)
{
int count = (n - 1) / 2;
for (int i = count; i >= 0; i--)
{
sb.append(mid - i * 2);
sb.append("+");
}
for (int i = 1; i < count; i++)
{
sb.append(mid + i * 2);
sb.append("+");
}
sb.append(mid + count * 2);
}
else
{
int count = n / 2;
for (int i = count - 1; i >= 0; i--)
{
sb.append(mid - i * 2 - 1);
sb.append("+");
}
for (int i = 0; i < count - 1; i++)
{
sb.append(mid + i * 2 + 1);
sb.append("+");
}
sb.append(mid + (count - 1) * 2 + 1);
}
System.out.println(String.valueOf(sb));
}
}
}
思路二:第一个数为n * n - n + 1
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext())
{
int n = scanner.nextInt();
StringBuffer sb = new StringBuffer();
int num = n * n - n + 1;
for (int i = 0; i < n - 1; i++)
{
sb.append(num);
sb.append("+");
num += 2;
}
sb.append(num);
System.out.println(sb.toString());
}
}
}

本文介绍了一种验证科彻斯定理的方法,该定理表明任意整数的立方均可表示为连续奇数之和。提供了两种算法实现,一种通过中间数计算奇数序列,另一种直接确定序列起始值。
&spm=1001.2101.3001.5002&articleId=79729395&d=1&t=3&u=4022f17b185145848a0c23e6c8a97cc1)
3105

被折叠的 条评论
为什么被折叠?



