输入一个正数s,打印出所有和为s的连续正数序列(至少含有两个数)。
void PrintContinuousSequence(int small,int big) { for(int i = small;i <= big;++i) printf("%d ",i); printf("\n"); } void FindContinusSequence(int sum) { if(sum < 3) return; int small = 1; int big = 2; int middle = (1 + sum) / 2; int curSum = small + big; while(small < middle) { if(curSum == sum) PrintContinuousSequence(small, big); while(curSum > sum && small < middle) { curSum -= small; small ++; if(curSum == sum) PrintContinuousSequence(small, big); } big ++; curSum += big; } } void Test(char* testName, int sum) { if(testName != NULL) printf("%s for %d begins: \n", testName, sum); FindContinusSequence(sum); } int main() { Test("test1", 1); Test("test2", 3); Test("test3", 4); Test("test4", 9); Test("test5", 15); Test("test6", 100); return 0; }