题目--尼科彻斯定理可以描述为:任何一个整数的立方都可以表示成一串连续奇数的和
题目分析:看过别人用一个二重循环的方式找结果,感觉算法复杂度高了,自已分析一下看,算法就是找连续奇数的起点和终点,可起点从1开始,从1,3,5...开始向上累加,只要sum小于n立方就一直累加,一旦等于就说明定理成立跳出循环,一旦sum大于n立方,就把起点向上提,并在sum中减去起点前面的去掉的奇数值,如此循环直至sum等于n立方,以下是C语言程序代码:
#include <stdio.h>
void NicoChess(int n)
{
int i=1,j=1,sum=1;
while(sum!=n*n*n)
{
while(sum<n*n*n)
{
j=j+2;
sum=sum+j;
}
while(sum>n*n*n)
{
sum=sum-i;
i=i+2;
}
}
printf("%d=%d+...+%d\n",n*n*n,i,j);
}
int main()
{
int n;
printf("请输入一个正整数n\n");
scanf("%d",&n);
NicoChess(n);
return 0;
}