Related Articles

# Find K consecutive integers such that their sum is N

• Last Updated : 08 Apr, 2021

Given two integers N and K, the task is to find K consecutive integers such that their sum if N.
Note: If there is no such K integers print -1.
Examples:

Input: N = 15, K = 5
Output: 1 2 3 4 5
Explanation:
N can be represented as sum of 5 consecutive integers as follows –
=> N => 1 + 2 + 3 + 4 + 5 = 15
Input: N = 33, K = 6
Output: 3 4 5 6 7 8
Explanation:
N can be represented as sum of 6 consecutive integers as follows –
=> N => 3 + 4 + 5 + 6 + 7 + 8 = 33

Naive Approach: A simple solution is to run a loop from i = 0 to N – (K – 1) to check if K consecutive integers starting from i is having sum as N.
Efficient Approach: The idea is to use Arithmetic Progression to solve this problem, where sum of K terms of arithmetic progression with common difference is 1 can be defined as follows –

1. Sum of K Terms –
=>

2. Solving the equation further to get the first term possible
=>

3. Here aK is the Kth term which can be written as a1 + K – 1
=>
=>

4. Finally, check the first term computed is an integer, If yes then K consecutive number exists whose sum if N.

Below is the implementation of the above approach:

## C++

 // C++ implementation to check if// a number can be expressed as// sum of K consecutive integer #include using namespace std; // Function to check if a number can be// expressed as the sum of k consecutivevoid checksum(int n, int k){    // Finding the first    // term of AP    float first_term = ((2 * n) / k                        + (1 - k))                       / 2.0;     // Checking if first    // term is an integer    if (first_term - int(first_term) == 0) {         // Loop to print the K        // consecutive integers        for (int i = first_term;             i <= first_term + k - 1; i++) {            cout << i << " ";        }    }    else        cout << "-1";} // Driver Codeint main(){    int n = 33, k = 6;    checksum(n, k);    return 0;}

## Java

 // Java implementation to check if// a number can be expressed as// sum of K consecutive integerclass GFG{ // Function to check if a number can be// expressed as the sum of k consecutivestatic void checksum(int n, int k){         // Finding the first    // term of AP    float first_term = (float) (((2 * n) / k +                                 (1 - k)) / 2.0);     // Checking if first    // term is an integer    if (first_term - (int)(first_term) == 0)    {         // Loop to print the K        // consecutive integers        for(int i = (int)first_term;            i <= first_term + k - 1; i++)        {           System.out.print(i + " ");        }    }    else        System.out.print("-1");} // Driver Codepublic static void main(String[] args){    int n = 33, k = 6;         checksum(n, k);}} // This code is contributed by 29AjayKumar

## Python3

 # Python3 implementation to check # if a number can be expressed as# sum of K consecutive integer # Function to check if a number can be# expressed as the sum of k consecutivedef checksum(n, k):         # Finding the first    # term of AP    first_term = ((2 * n) / k + (1 - k)) / 2.0         # Checking if first    # term is an integer    if (first_term - int(first_term) == 0):                 # Loop to print the K        # consecutive integers        for i in range(int(first_term),                       int(first_term) + k):            print(i, end = ' ')    else:        print('-1') # Driver Codeif __name__=='__main__':         (n, k) = (33, 6)    checksum(n, k) # This code is contributed by rutvik_56

## C#

 // C# implementation to check if// a number can be expressed as// sum of K consecutive integerusing System;class GFG{ // Function to check if a number can be// expressed as the sum of k consecutivestatic void checksum(int n, int k){         // Finding the first    // term of AP    float first_term = (float)(((2 * n) / k +                                (1 - k)) / 2.0);     // Checking if first    // term is an integer    if (first_term - (int)(first_term) == 0)    {         // Loop to print the K        // consecutive integers        for(int i = (int)first_term;                i <= first_term + k - 1; i++)        {            Console.Write(i + " ");        }    }    else        Console.Write("-1");} // Driver Codepublic static void Main(String[] args){    int n = 33, k = 6;         checksum(n, k);}} // This code is contributed by sapnasingh4991

## Javascript

 
Output:
3 4 5 6 7 8

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

My Personal Notes arrow_drop_up