既然是数学问题,那么就用数学的方法来解决(笑)

无非就是一个等差数列求和的问题

等差数列求和公式:

其中:图片说明

代入可得:图片说明 并且图片说明

满足正数的条件,所以图片说明

可得:图片说明

算法复杂度:图片说明

接下来就可以愉快地写代码啦:

function FindContinuousSequence(sum)
{
    const res = [];
    if(sum <= 0) return res;
    let n=2, x0, each;
    while(n**2 + n <= 2*sum){
        x0 = (2*sum + n -  n**2) / (2*n);
        if(Math.floor(x0) === x0){
            each = [];
            for(let i=0; i<n; ++i) each.push(x0+i);
            res.push(each);
        }
        ++n;
    }
    return res.sort((a, b) => a[0]-b[0]);
}