【正确答案】
【答案解析】假设x可以表示成n(n≥2)个连续正整数的和,那么数学表达式如下:x=m+(m+1)+(m+2)+...+(m+n-1),其中m为分解成的连续整数中最小的那一个,由于m是大于等于1的正整数,可知x=(2m+n-1)×n/2,变换之后m=(2×x/n-n+1)/2,由m的范围可以知道(2×x/n-n+1)/2≥1,以上就是X和n的关系。给定一个n,看是否x能分解成n个连续整数的和,可以判断是否存在m,也就转换成(2×x/n-n+1)是否是偶数的问题。
判断一个数是否是偶数,是一个比较容易解决的问题,所以本题就迎刃而解了,程序示例如下:
#inchude<stdio.h>
#include<math.h>
int main()
{
int m=0,n=0,start=0,end=0,flag=0;
float temp=0.0;
printf("请输入被分解的数:");
scanf("%d",&m);
printf("请输入需要被分解的数字的个数:");
scanf("%d",&n);
temp=(float)m/n-(float)(n-1)/2;
if(temp==(int)temp)
{
for(flag=1,start=(int)temp,end=start+n;start<end;start++)
printf("%d",start);
printf("/n");
}
if(flag==0)
printf("没有符合条件的个数/n");
return 0;
}
程序输出结果:
请输入被分解的数:10
请输入需要被分解的数字的个数:4
1 2 3 4