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

package algorithm;


public class Algorithm2Test {
    public static void main(String[]    args)
    {
        sequence(5465898);
    }

    static void sequence(long l)
    {

        for (int num = 2 ;num <l/2-1; num++)
        {
            pring(l,l/num,num);
        }
    }

    static void pring(long l,long l2,long num)
    {
        if(l2-(num-1)/2<=0) return;
        long check=0;
        StringBuilder strPrint =new StringBuilder();
        if(num%2==0)
        {
            for(long i=l2-(num-1)/2 ;i<l2+num/2;i++)
            {
                strPrint.append(i + " + ");
                check+=i;
            }
            if(check+l2+num/2==l)
            {
                strPrint.append(l2+num/2);
                System.out.println(strPrint.toString());
            }
        }else
        {
            for(long i = l2-(num-1)/2 ;i<l2+num/2;i++)
            {
                strPrint.append(i + " + ");
                check+=i;
            }
            if(check+l2+num/2==l)
            {
                strPrint.append(l2+num/2);
                System.out.println(strPrint.toString());
            }
        }

    }
}

  

posted @ 2019-09-12 13:58  wygflying  阅读(167)  评论(0编辑  收藏  举报