这是《编程之美》那本书中2.21节描述的那道题目,这里给出一种解法。
void findsequence(int num){
int sum,i,j;
sum=1,i=1,j=2;
for( ; j<num && sum<num ; sum+=j , j++);
for( ; i<j ; ){
if(sum==num && j-i>1){
for(int k=i ; k<j ; k++)
printf("%-4d",k);
printf("\n");
sum-=i;
i++;
}
else if(sum>num){
sum-=i;
i++;
}
else{
sum+=j;
j++;
}
}
}
如果你仔细观察一下的话会发现2的幂是无法由连续的整数相加得到的。