题目描述
验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。
输入
任一正整数
输出
该数的立方分解为一串连续奇数的和
样例输入
13
样例输出
131313=2197=157+159+161+163+165+167+169+171+173+175+177+179+181
/*
验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。
样例输入
13
样例输出
13*13*13=2197=157+159+161+163+165+167+169+171+173+175+177+179+181
*/
#include<stdio.h>
int main()
{
int m,sum=0,sum1=0;//定义接收、立方、以及m个数的和
scanf("%d",&m);
int a[500];//防止溢出
sum=m*m*m;
int n;
for(int i=n=0;i<sum;i++)
{
if(i%2!=0)//判断奇数
{
a[n]=i;//存储连续奇数
sum1+=i;//m个数的和
n++;
}
if(n==m)//满足m个数
{
n=0;//清零
if(sum1==sum)//相等就结束循环
{
break;
}else//否则 等于第一个奇数 sum1清零
{
i=a[0];
sum1=0;
}
}
}
printf("%d*%d*%d=%d=",m,m,m,sum);//输出格式
if(m<=1)//注意1和0 特别输出
{
printf("%d",m);
}else
{
for(int i=0;i<m;i++)
{
if(i==m-1)
{
printf("%d",a[i]);
}else
{
printf("%d+",a[i]);
}
}
}
return 0;
}