已知正整数n的立方可以表示为n个连续奇数的和,例如:
3的3次方 = 7 + 9 + 11 (不会打那个次方数)
6的3次方 = 31 + 33 + 35 + 37 + 39 + 41
对于任意给定的正整数m,如何得到这连续m个奇数呢?
有没发现规律同学,
n个连续的奇数,我假设第一个奇数为x,那么第n个奇数就是x+(2n-2)
n个连续奇数的和就等于x+(x+2)+...+(x+(2n-2)) = (x+n-1)*n(应该学过这种计算方法吧——(首项+末项)*项数/2)
正整数n的立方可以表示为n个连续奇数的和
就可以变成
n*n*n = (x+n-1)*n -> n*n = x+n-1 -> x=n*n-n+1 这一步就解决了
[code="java"]
import java.util.ArrayList;
import java.util.List;
public class SumTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
List<Integer> ret = retrieveNums(3);
System.out.println("正整数3的立方可以表示以下为3个连续奇数的和:");
System.out.println(ret);
ret = retrieveNums(6);
System.out.println("正整数6的立方可以表示以下为3个连续奇数的和:");
System.out.println(ret);
}
public static List<Integer> retrieveNums(int n)
{
List<Integer> ret = new ArrayList<Integer>();
int firstNum = n*n - n + 1;
for(int i=0;i<n;i++)
{
ret.add(firstNum + 2*i);
}
return ret;
}
}
[/code]
[b]写了一个Java的实现,你可以直接调用Jisuan方法。参数是你需要得到结果的正整数。[/b]
[code="java"]
public class Test {
public static void main(String[] args) {
System.out.println(Jisuan(10));
}
public static String Jisuan(int sz) {
String str = "";
if (sz < 0)
return "0";
if (sz == 1)
return "3";
if (sz == 2)
return "1 + 3 + 5";
int count = sz;
int from = sz * sz - (sz - 1);
while (count > 0) {
str += from + " + ";
from += 2;
count--;
}
str = str.substring(0,str.length()-2);
return str;
}
}
[/code]
我的解题思路是这样的:
1.先把排列几组数字,以便从中发现规律
2.发现规律,通过上面几组数,我发现从3开始便有了规律
规律1:第一个数字总是为:n*n-(n-1)
规律2:他们中总存在n个数字相加
3.下面便是代码编写了。
[code="java"]
[/code]