Express a number as sum of consecutive numbers

Given a number N, write a function to express N as sum of two or more consecutive positive numbers. If there is no solution, output -1. If there are multiple solution, then print one of them.
Examples:

```Input : N = 10
Output : 4 + 3 + 2 + 1

Input  : N = 8
Output : -1

Input  : N = 24
Output : 9 + 8 + 7```

```Sum of first n natural numbers = n * (n + 1)/2

Sum of first (n + k) numbers = (n + k) * (n + k + 1)/2

If N is sum of k consecutive numbers, then
following must be true.

N = [(n+k)(n+k+1) - n(n+1)] / 2

OR

2 * N = [(n+k)(n+k+1) - n(n+1)]```

Below is the implementation based on above idea.

C++

 `// C++ program to print a consecutive sequence``// to express N if possible.``#include ``using` `namespace` `std;` `// Print consecutive numbers from``// last to first``void` `printConsecutive(``int` `last, ``int` `first)``{``    ``cout << first++;``    ``for` `(``int` `x = first; x<= last; x++)``        ``cout << ``" + "` `<< x;``}` `void` `findConsecutive(``int` `N)``{``    ``for` `(``int` `last=1; last

Java

 `// Java program to print a consecutive sequence``// to express N if possible.``import` `java.util.*;``class` `GFG``{` `// Print consecutive numbers from``// last to first``static` `void` `printConsecutive(``int` `last, ``int` `first)``{``    ``System.out.print(first++);``    ``for` `(``int` `x = first; x<= last; x++)``        ``System.out.print(``" + "` `+  x);``}` `static` `void` `findConsecutive(``int` `N)``{``    ``for` `(``int` `last = ``1``; last < N; last++)``    ``{``        ``for` `(``int` `first = ``0``; first < last; first++)``        ``{``            ``if` `(``2``*N == (last-first)*(last+first+``1``))``            ``{``                ``System.out.print(N+ ``" = "``);``                ``printConsecutive(last, first+``1``);``                ``return``;``            ``}``        ``}``    ``}``    ``System.out.print(``"-1"``);``}` `// Driver code``public` `static` `void` `main(String[] args)``{``    ``int` `n = ``12``;``    ``findConsecutive(n);``}``}` `// This code is contributed by umadevi9616`

Python3

 `# Python3 program to print a consecutive``# sequence to express N if possible.` `# Print consecutive numbers ``# from last to first``def` `printConsecutive(last, first):``    ``print` `(first, end ``=` `"")``    ``first ``+``=` `1``    ``for` `x ``in` `range``(first, last ``+` `1``):``        ``print` `(``" +"``, x, end ``=` `"")` `def` `findConsecutive(N):``    ``for` `last ``in` `range``(``1``, N):``        ` `        ``for` `first ``in` `range``(``0``, last):``            ` `            ``if` `2` `*` `N ``=``=` `(last ``-` `first) ``*` `(last ``+` `first ``+` `1``):``                ``print` `(N, ``"= "``, end ``=` `"")``                ``printConsecutive(last, first ``+` `1``)``                ``return``    ``print` `(``"-1"``)` `# Driver code``n ``=` `12``findConsecutive(n)` `# This code is contributed by Shreyanshi Arun.`

C#

 `// C# program to print a consecutive sequence``// to express N if possible.``using` `System;` `class` `GfG``{``    ``// Print consecutive numbers from``    ``// last to first``    ``static` `void` `printConsecutive(``int` `last, ``int` `first)``    ``{``        ``Console.Write(first++);``        ``for` `(``int` `x = first; x <= last; x++)``            ``Console.Write(``" + "``+x);``    ``} ``    ` `    ``static` `void` `findConsecutive(``int` `N)``    ``{``        ``for` `(``int` `last = 1; last < N; last++)``        ``{``            ``for` `(``int` `first = 0; first < last; first++)``            ``{``                ``if` `(2 * N == (last - first) ``                    ``* (last + first + 1))``                ``{``                    ``Console.Write(N + ``" = "``);``                    ``printConsecutive(last, first + 1);``                    ``return``;``                ``}``            ``}``        ``}``        ``Console.Write(``"-1"``);``    ``}``    ` `    ``// Driver code``    ``public` `static` `void` `Main () ``    ``{``        ``int` `n = 12;``        ``findConsecutive(n);``    ``}``}` `// This code is contributed by vt_m`

PHP

 ``

Javascript

 ``

Output:

`12 = 3 + 4 + 5`

Previous
Next