 Open in App
Not now

# Print all possible consecutive numbers with sum N

• Difficulty Level : Easy
• Last Updated : 13 May, 2022

Given a number N. The task is to print all possible consecutive numbers that add up to N.

Examples :

```Input: N = 100
Output:
9 10 11 12 13 14 15 16
18 19 20 21 22

Input: N = 125
Output:
8 9 10 11 12 13 14 15 16 17
23 24 25 26 27
62 63 ```

One important fact is we can not find consecutive numbers above N/2 that adds up to N, because N/2 + (N/2 + 1) would be more than N. So we start from start = 1 till end = N/2 and check for every consecutive sequence whether it adds up to N or not. If it is then we print that sequence and start looking for the next sequence by incrementing start point.

## C++

 `// C++ program to print consecutive sequences` `// that add to a given value` `#include` `using` `namespace` `std;`   `void` `findConsecutive(``int` `N)` `{` `  `  `    ``// Note that we don't ever have to sum` `    ``// numbers > ceil(N/2)` `    ``int` `start = 1, end = (N+1)/2;`   `    ``// Repeat the loop from bottom to half` `    ``while` `(start < end)` `    ``{` `      `  `        ``// Check if there exist any sequence` `        ``// from bottom to half which adds up to N` `        ``int` `sum = 0;` `        ``for` `(``int` `i = start; i <= end; i++)` `        ``{` `            ``sum = sum + i;`   `            ``// If sum = N, this means consecutive` `            ``// sequence exists` `            ``if` `(sum == N)` `            ``{` `              `  `                ``// found consecutive numbers! print them` `                ``for` `(``int` `j = start; j <= i; j++)` `                    ``cout <<``" "``<< j;`   `                ``cout <<``"\n"``;` `                ``break``;` `            ``}`   `            ``// if sum increases N then it can not exist` `            ``// in the consecutive sequence starting from` `            ``// bottom` `            ``if` `(sum > N)` `                ``break``;` `        ``}` `        ``sum = 0;` `        ``start++;` `    ``}` `}`   `// Driver code` `int` `main(``void``)` `{` `    ``int` `N = 125;` `    ``findConsecutive(N);` `    ``return` `0;` `}`   `// This code is contributed by shivanisinghss2110`

## C

 `// C++ program to print consecutive sequences` `// that add to a given value` `#include`   `void` `findConsecutive(``int` `N)` `{` `    ``// Note that we don't ever have to sum` `    ``// numbers > ceil(N/2)` `    ``int` `start = 1, end = (N+1)/2;`   `    ``// Repeat the loop from bottom to half` `    ``while` `(start < end)` `    ``{` `        ``// Check if there exist any sequence` `        ``// from bottom to half which adds up to N` `        ``int` `sum = 0;` `        ``for` `(``int` `i = start; i <= end; i++)` `        ``{` `            ``sum = sum + i;`   `            ``// If sum = N, this means consecutive` `            ``// sequence exists` `            ``if` `(sum == N)` `            ``{` `                ``// found consecutive numbers! print them` `                ``for` `(``int` `j = start; j <= i; j++)` `                    ``printf``(``"%d "``, j);`   `                ``printf``(``"\n"``);` `                ``break``;` `            ``}`   `            ``// if sum increases N then it can not exist` `            ``// in the consecutive sequence starting from` `            ``// bottom` `            ``if` `(sum > N)` `                ``break``;` `        ``}` `        ``sum = 0;` `        ``start++;` `    ``}` `}`   `// Driver code` `int` `main(``void``)` `{` `    ``int` `N = 125;` `    ``findConsecutive(N);` `    ``return` `0;` `}`

## Java

 `// Java program to print ` `// consecutive sequences ` `// that add to a given value` `import` `java.io.*;`   `class` `GFG ` `{` `static` `void` `findConsecutive(``int` `N)` `{` `    ``// Note that we don't ` `    ``// ever have to sum` `    ``// numbers > ceil(N/2)` `    ``int` `start = ``1``;` `    ``int` `end = (N + ``1``) / ``2``;`   `    ``// Repeat the loop` `    ``// from bottom to half` `    ``while` `(start < end)` `    ``{` `        ``// Check if there exist ` `        ``// any sequence from ` `        ``// bottom to half which` `        ``// adds up to N` `        ``int` `sum = ``0``;` `        ``for` `(``int` `i = start; i <= end; i++)` `        ``{` `            ``sum = sum + i;`   `            ``// If sum = N, this means ` `            ``// consecutive sequence exists` `            ``if` `(sum == N)` `            ``{` `                ``// found consecutive ` `                ``// numbers! print them` `                ``for` `(``int` `j = start; j <= i; j++)` `                    `  `                    ``System.out.print(j + ``" "``);` `                    ``System.out.println();` `                ``break``;` `            ``}`   `            ``// if sum increases N then` `            ``// it can not exist in the ` `            ``// consecutive sequence ` `            ``// starting from bottom` `            ``if` `(sum > N)` `                ``break``;` `        ``}` `        ``sum = ``0``;` `        ``start++;` `    ``}` `}`   `// Driver code` `public` `static` `void` `main (String[] args)` `{` `    ``int` `N = ``125``;` `    ``findConsecutive(N);` `}` `}`   `// This code is contributed by m_kit`

## Python3

 `# Python3 program to print consecutive ` `# sequences that add to a given value` `def` `findConsecutive(N):`   `    ``# Note that we don't ever have to ` `    ``# Sum numbers > ceil(N/2)` `    ``start ``=` `1` `    ``end ``=` `(N ``+` `1``) ``/``/` `2`   `    ``# Repeat the loop from bottom to half` `    ``while` `(start < end):` `    `  `        ``# Check if there exist any sequence` `        ``# from bottom to half which adds up to N` `        ``Sum` `=` `0` `        ``for` `i ``in` `range``(start, end ``+` `1``):` `        `  `            ``Sum` `=` `Sum` `+` `i`   `            ``# If Sum = N, this means consecutive` `            ``# sequence exists` `            ``if` `(``Sum` `=``=` `N):` `            `  `                ``# found consecutive numbers! print them` `                ``for` `j ``in` `range``(start, i ``+` `1``):` `                    ``print``(j, end ``=` `" "``)`   `                ``print``()` `                ``break`   `            ``# if Sum increases N then it can not` `            ``# exist in the consecutive sequence ` `            ``# starting from bottom` `            ``if` `(``Sum` `> N):` `                ``break` `        `  `        ``Sum` `=` `0` `        ``start ``+``=` `1` `    `  `# Driver code` `N ``=` `125` `findConsecutive(N)`   `# This code is contributed by Mohit kumar 29`

## C#

 `// C# program to print ` `// consecutive sequences ` `// that add to a given value` `using` `System;`   `class` `GFG` `{` `static` `void` `findConsecutive(``int` `N)` `{` `    ``// Note that we don't ` `    ``// ever have to sum` `    ``// numbers > ceil(N/2)` `    ``int` `start = 1;` `    ``int` `end = (N + 1) / 2;`   `    ``// Repeat the loop` `    ``// from bottom to half` `    ``while` `(start < end)` `    ``{` `        ``// Check if there exist ` `        ``// any sequence from ` `        ``// bottom to half which` `        ``// adds up to N` `        ``int` `sum = 0;` `        ``for` `(``int` `i = start; i <= end; i++)` `        ``{` `            ``sum = sum + i;`   `            ``// If sum = N, this means ` `            ``// consecutive sequence exists` `            ``if` `(sum == N)` `            ``{` `                ``// found consecutive ` `                ``// numbers! print them` `                ``for` `(``int` `j = start; j <= i; j++)` `                    `  `                    ``Console.Write(j + ``" "``);` `                    ``Console.WriteLine();` `                ``break``;` `            ``}`   `            ``// if sum increases N then` `            ``// it can not exist in the ` `            ``// consecutive sequence ` `            ``// starting from bottom` `            ``if` `(sum > N)` `                ``break``;` `        ``}` `        ``sum = 0;` `        ``start++;` `    ``}` `}`   `// Driver code` `static` `public` `void` `Main ()` `{` `    ``int` `N = 125;` `    ``findConsecutive(N);` `}` `}`   `// This code is contributed by ajit`

## PHP

 ` ceil(N/2)` `    ``\$start` `= 1;` `    ``\$end` `= (``\$N` `+ 1) / 2;`   `    ``// Repeat the loop from` `    ``// bottom to half` `    ``while` `(``\$start` `< ``\$end``)` `    ``{` `        ``// Check if there exist any ` `        ``// sequence from bottom to ` `        ``// half which adds up to N` `        ``\$sum` `= 0;` `        ``for` `(``\$i` `= ``\$start``; ``\$i` `<= ``\$end``; ``\$i``++)` `        ``{` `            ``\$sum` `= ``\$sum` `+ ``\$i``;`   `            ``// If sum = N, this means ` `            ``// consecutive sequence exists` `            ``if` `(``\$sum` `== ``\$N``)` `            ``{` `                ``// found consecutive ` `                ``// numbers! print them` `                ``for` `(``\$j` `= ``\$start``; ``\$j` `<= ``\$i``; ``\$j``++)` `                    ``echo` `\$j` `,``" "``;`   `                ``echo` `"\n"``;` `                ``break``;` `            ``}`   `            ``// if sum increases N then it ` `            ``// can not exist in the consecutive ` `            ``// sequence starting from bottom` `            ``if` `(``\$sum` `> ``\$N``)` `                ``break``;` `        ``}` `        ``\$sum` `= 0;` `        ``\$start``++;` `    ``}` `}`   `// Driver code` `\$N` `= 125;` `findConsecutive(``\$N``);`   `// This code is contributed by ajit` `?>`

## Javascript

 ``

Output :

```8 9 10 11 12 13 14 15 16 17
23 24 25 26 27
62 63 ```

Optimized Solution:
In the above solution, we keep recalculating sums from start to end, which results in O(N^2) worst-case time complexity. This can be avoided by using a precomputed array of sums, or better yet – just keeping track of the sum you have so far and adjusting it depending on how it compares to the desired sum.
Time complexity of below code is O(N).

## C++

 `// Optimized C++ program to find sequences of all consecutive` `// numbers with sum equal to N` `#include ` `using` `namespace` `std;`   `void` `printSums(``int` `N)` `{` `    ``int` `start = 1, end = 1;` `    ``int` `sum = 1;`   `    ``while` `(start <= N/2)` `    ``{` `        ``if` `(sum < N)` `        ``{` `            ``end += 1;` `            ``sum += end;` `        ``}` `        ``else` `if` `(sum > N)` `        ``{` `            ``sum -= start;` `            ``start += 1;` `        ``}` `        ``else` `if` `(sum == N)` `        ``{` `            ``for` `(``int` `i = start; i <= end; ++i)` `                ``cout <<``" "``<< i;`   `            ``cout <<``"\n"``;` `            ``sum -= start;` `            ``start += 1;` `        ``}` `    ``}` `}`   `// Driver Code` `int` `main()` `{` `    ``printSums(125);` `    ``return` `0;` `}`   `// this code is contributed by shivanisinghss2110`

## C

 `// Optimized C program to find sequences of all consecutive` `// numbers with sum equal to N` `#include `   `void` `printSums(``int` `N)` `{` `    ``int` `start = 1, end = 1;` `    ``int` `sum = 1;`   `    ``while` `(start <= N/2)` `    ``{` `        ``if` `(sum < N)` `        ``{` `            ``end += 1;` `            ``sum += end;` `        ``}` `        ``else` `if` `(sum > N)` `        ``{` `            ``sum -= start;` `            ``start += 1;` `        ``}` `        ``else` `if` `(sum == N)` `        ``{` `            ``for` `(``int` `i = start; i <= end; ++i)` `                ``printf``(``"%d "``, i);`   `            ``printf``(``"\n"``);` `            ``sum -= start;` `            ``start += 1;` `        ``}` `    ``}` `}`   `// Driver Code` `int` `main()` `{` `    ``printSums(125);` `    ``return` `0;` `}`

## Java

 `// Optimized Java program to find` `// sequences of all consecutive` `// numbers with sum equal to N` `import` `java.io.*;`   `class` `GFG {` `    `  `    ``static` `void` `printSums(``int` `N)` `    ``{` `        ``int` `start = ``1``, end = ``1``;` `        ``int` `sum = ``1``;` `    `  `        ``while` `(start <= N/``2``)` `        ``{` `            ``if` `(sum < N)` `            ``{` `                ``end += ``1``;` `                ``sum += end;` `            ``}` `            ``else` `if` `(sum > N)` `            ``{` `                ``sum -= start;` `                ``start += ``1``;` `            ``}` `            ``else` `if` `(sum == N)` `            ``{` `                ``for` `(``int` `i = start; ` `                         ``i <= end; ++i)` `                         `  `                    ``System.out.print(i ` `                                ``+ ``" "``);` `    `  `                ``System.out.println();` `                ``sum -= start;` `                ``start += ``1``;` `            ``}` `        ``}` `    ``}`   `    ``// Driver Code` `    ``public` `static` `void` `main (String[] args)` `    ``{` `            ``printSums(``125``);` `    ``}` `}`   `// This code is contributed by anuj_67.`

## Python3

 `# Optimized Python3 program to find sequences of all consecutive ` `# numbers with sum equal to N ` `def` `findConsecutive(N):`   `    ``start ``=` `1` `    ``end ``=` `1` `    ``sum` `=` `1` `    `  `    ``while` `start <``=` `N``/``2``:` `        `  `        ``if` `sum` `< N:` `            ``end ``+``=` `1` `            ``sum` `+``=` `end` `        `  `        ``if` `sum` `> N:` `            ``sum` `-``=` `start` `            ``start ``+``=` `1` `            `  `        ``if` `sum` `=``=` `N:` `            `  `            ``for` `i ``in` `range``(start, end ``+` `1``):` `                ``print``(i, end``=``' '``)` `            ``print``( )` `            ``sum` `-``=` `start ` `            ``start ``+``=` `1`   `# Driver code` `N ``=` `125` `findConsecutive(N) `   `# This code is contributed by Sanskriti Agrawal`

## C#

 `// Optimized C# program to find` `// sequences of all consecutive` `// numbers with sum equal to N` `using` `System;`   `class` `GFG {` `    `  `    ``static` `void` `printSums(``int` `N)` `    ``{` `        ``int` `start = 1, end = 1;` `        ``int` `sum = 1;` `    `  `        ``while` `(start <= N/2)` `        ``{` `            ``if` `(sum < N)` `            ``{` `                ``end += 1;` `                ``sum += end;` `            ``}` `            ``else` `if` `(sum > N)` `            ``{` `                ``sum -= start;` `                ``start += 1;` `            ``}` `            ``else` `if` `(sum == N)` `            ``{` `                ``for` `(``int` `i = start; ` `                        ``i <= end; ++i)` `                        `  `                    ``Console.Write(i ` `                                ``+ ``" "``);` `    `  `                ``Console.WriteLine();` `                ``sum -= start;` `                ``start += 1;` `            ``}` `        ``}` `    ``}`   `    ``// Driver Code` `    ``public` `static` `void` `Main ()` `    ``{` `            ``printSums(125);` `    ``}` `}`   `// This code is contributed by anuj_67.`

## PHP

 ` ``\$N``)` `        ``{` `            ``\$sum` `-= ``\$start``;` `            ``\$start` `+= 1;` `        ``}` `        ``else` `if` `(``\$sum` `== ``\$N``)` `        ``{` `            ``for` `(``\$i` `= ``\$start``; ``\$i` `<= ``\$end``; ++``\$i``)` `                ``echo` `\$i``,``" "``;` `                ``echo` `"\n"``;` `            ``\$sum` `-= ``\$start``;` `            ``\$start` `+= 1;` `        ``}` `    ``}` `}`   `// Driver Code` `    ``printSums(125);`   `// This code is contributed by jit_t` `?>`

## Javascript

 ``

Output :

```8 9 10 11 12 13 14 15 16 17
23 24 25 26 27
62 63 ```

Reference :
https://www.careercup.com/page?pid=microsoft-interview-questions&n=2
This article is contributed by Niteesh Kumar. 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.