输入一个正整数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);
	}
}