# 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```

Recommended Practice

```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`

Reference :
https://math.stackexchange.com/questions/139842/in-how-many-ways-can-a-number-be-expressed-as-a-sum-of-consecutive-numbers
If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.