输入一个正整数n,输出全部和为n的连续整数序列
输入一个正整数n,输出所有和为n的连续整数序列
思路:
用两个变量记录一段区间,begin,end,sum表示该区间中所有数据的和[begin,end),如何sum==n,那么就打印该区间,然后sum-=low,low++,如何sum<n,那么sum+=end,end++,如果sum>n,那么sum-=low,low++.
参考代码如下:
public void printSeq(int begin,int end) { for(int i=begin;i<end;i++) { System.out.print(i+" "); } System.out.println(); } public void findSeq(int num) { if(num<3) return; int sum=1; int begin=1; int end=2; int mid=num/2; while(begin<=mid) { if(sum==num) { printSeq(begin, end); sum-=begin; begin++; } if(sum<num) { sum+=end; end++; }else if(sum>num) { sum-=begin; begin++; } } } public static void main(String[] args) { FindSumSequence find=new FindSumSequence(); find.findSeq(15); } }