# 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: Please solve it on “PRACTICE” first, before moving on to the solution.

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

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

 ` `

Output:

```12 = 3 + 4 + 5
```

This article is contributed by Roshni Agarwal. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

My Personal Notes arrow_drop_up

Improved By : nitin mittal

Article Tags :
Practice Tags :

2

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.