输入一个正数n,输出所有和为n连续正数序列

来源:互联网 发布:马自达3星骋轮毂数据 编辑:程序博客网 时间:2024/04/26 08:01

输入一个正数n,输出所有和为n连续正数序列。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-54-67-8

 

具体代码如下:

 

#include "stdafx.h"#include<list>   #include<iostream>   using namespace std;  //函数功能 : 打印满足条件的连续序列//函数参数 : begin为开始,end为结束,左闭右开区间//返回值 :   无void PrintSequence(unsigned begin, unsigned end){for(unsigned i = begin; i < end; i++)cout<<i<<' ';cout<<endl;}//函数功能 : 输出所有和为n连续正数序列//函数参数 : n为整数//返回值 :   无void FindTargetSequence(unsigned n){if(n < 3)    //必须是2个连续数之和,n必须大于等于3return ;unsigned low = 1;unsigned high = 2;unsigned middle = n / 2;unsigned sum = 1;while(low <= middle) //只需考虑一半元素即可{if(sum == n)  //满足条件PrintSequence(low, high);if(sum < n)  //不够,说明还需要再加{sum += high;high++;}else //够了,说明要减一点{sum -= low;low++;}}}int main()  {  /*int sum, n;  cout << "请输入你要等于多少的数值sum:" << endl;  cin >> sum;  cout << "请输入你要从1.....n数列中取值的n:" << endl;  cin >> n;  cout << "所有可能的序列,如下:" << endl;  find_factor(sum,n);  */FindTargetSequence(15);system("pause");return 0;  } 


 

原创粉丝点击