和为N的连续正整数序列

题目

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


一种运用数学规律的解法

假定有k个连续的正整数和为N,其中连续序列的第一个数为x,则有x+(x+1)+(x+2)+...+(x+k-1) = N。从而可以求得x = (N - k*(k-1)/2)  /  k。当x的值小于等于0时,则说明已经没有正整数序列的和为N了,此时循环退出。初始化k=2,表示2个连续的正整数和为N,则可以求出x的值,并判断从x开始是否存在2个连续正整数和为N,若不存在则k++,继续循环。

你可能感兴趣的:(面试题系列)