#include <stdio.h>
main()
{
int n,a,m,i,flag=0;
printf("input a number ( >0 ) : ");
scanf("%d",&m);
for(n=2; n<=m/2+1; n++)
{
if((2*m-n*n)%n==0)
{
if(((2*m-n*n)/n+1)%2==0)
{
flag=1;
a=((2*m-n*n)/n+1)/2 ;
printf("%d=",m);
for(i=0; i<n-1; i++)
printf("%d+",a++);
printf("%d\n",a);
}
}
}
if(flag==0) printf("Don't have\n");
}
设输入的数为m
输出的第一个数为a ,有n个连续的数
则可得
a a+1 a+2 .... a+n-1
即 (2a+n-1)n/2=m
对于每个可能的n,测试相应的a是否为整数,是,即可输出
你还不如全部改成double型,省掉好些if