/**********************验证尼科彻斯定理***************************************************************************/
//验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。
//除了这里的,可参考利用vector的,http://blog.csdn.net/sunnyyoona/article/details/46731353
void main(){
while(1){
printf("请输入m=");
int m=0;
scanf("%d",&m);
nikecesi(m);
}
}
void nikecesi(int m){
if(m==0) printf("m不能为0");
bool flag=false;
int sum0=m*m*m;
int sum1=0,start;
for(int i=1;i<=sum0;i+=2){
sum1=0;
start=i;
for(int j=0;j<m;j++){
sum1=sum1+start;
start+=2;
}
if(sum1==sum0) {
flag=true;
print_(m,i,flag);
return;
}
}
flag=false;
print_(m,0,false);
}
//m 为输入的数,
//i为开始加的奇数
//flag为是否找到的标志位
void print_(int m,int i,bool flag){
if(flag==true){
for(int k=0;k<m;k++){
printf(" %d ",i+2*k);
if(k<m-1) printf("+");
}
}
else printf("-1");
}
验证尼科彻斯定理
最新推荐文章于 2024-01-14 17:36:34 发布