# Count pair of integers having even sum

• Last Updated : 05 Aug, 2021

Given two integers N and M, the task is to count all possible pair of integers (i, j) (1 ≤ i ≤ N, 1 ≤ j ≤ M) such that i + j is even.

Examples:

Input: N = 6, M = 4
Output: 12
Explanation: The pairs (1, 1), (1, 3), (2, 2), (2, 4), (3, 1), (3, 3), (4, 2), (4, 4), (5, 1), (5, 3), (6, 2), (6, 4) satisfy the required condition. Therefore, the count is 12.

Input: N = 2 and M = 8
Output:

Naive Approach: The simplest approach to solve this problem is to traverse over the range [1, M] for every number in that range, traverse the range [1, N] and generate all possible pairs. For every possible pair, check its sum is an even number or not. If found to be true, increment the count. Finally, print the count obtained.

Below is the implementation of the above approach:

## C++

 // C++ program for the above approach#include using namespace std; // Function to count pairs with even sumint countEvenPairs(int N, int M){         // Stores the count of pairs    // with even sum    int count = 0;     // Traverse the range 1 to N    for(int i = 1; i <= N; i++)    {                 // Traverse the range 1 to M        for(int j = 1; j <= M; j++)        {                         // Check if the sum of the            // pair (i, j) is even or not            if ((i + j) % 2 == 0)            {                                 // Update count                count++;            }        }    }     // Return the count    return count;} // Driver Codeint main(){    int N = 4;    int M = 6;         cout << countEvenPairs(N, M) << endl;         return 0;} // This code is contributed by akhilsaini

## Java

 // Java program for the above approachimport java.io.*; class GFG {     // Function to count pairs with even sum    public static int countEvenPairs(        int N, int M)    {         // Stores the count of pairs        // with even sum        int count = 0;         // Traverse the range 1 to N        for (int i = 1; i <= N; i++) {             // Traverse the range 1 to M            for (int j = 1; j <= M; j++) {                 // Check if the sum of the                // pair (i, j) is even or not                if ((i + j) % 2 == 0) {                     // Update count                    count++;                }            }        }         // Return the count        return count;    }     // Driver Code    public static void main(String[] args)    {        int N = 4;        int M = 6;        System.out.print(            countEvenPairs(N, M));    }}

## Python3

 # Python3 program for the above approach # Function to count pairs with even sumdef countEvenPairs(N, M):         # Stores the count of pairs    # with even sum    count = 0         # Traverse the range 1 to N    for i in range(1, N + 1):             # Traverse the range 1 to M        for j in range(1, M + 1):                     # Check if the sum of the            # pair (i, j) is even or not            if ((i + j) % 2 == 0):                               # Update count                count += 1         # Return the count    return count # Driver Codeif __name__ == '__main__':       N = 4  M = 6     print(countEvenPairs(N, M))   # This code is contributed by akhilsaini

## C#

 // C# program for the above approachusing System; class GFG{ // Function to count pairs with even sumpublic static int countEvenPairs(int N, int M){         // Stores the count of pairs    // with even sum    int count = 0;     // Traverse the range 1 to N    for(int i = 1; i <= N; i++)    {                 // Traverse the range 1 to M        for(int j = 1; j <= M; j++)        {                         // Check if the sum of the            // pair (i, j) is even or not            if ((i + j) % 2 == 0)            {                                 // Update count                count++;            }        }    }         // Return the count    return count;} // Driver Codepublic static void Main(){    int N = 4;    int M = 6;         Console.WriteLine(        countEvenPairs(N, M));}} // This code is contributed by akhilsaini

## Javascript


Output:
12

Time Complexity: O(N2
Space Complexity: O(1)

Efficient Approach: The above approach can be optimized based on the following observations:

• Even number + Even number = Even number
• Odd number + Odd number = Even number

Follow the steps below to solve the problem:

• Initialize two variables, say nEven and nOdd, to store the count of odd and even integers up to N.
• Initialize two variables, say mEven and mOdd, to store the count of even and odd integers up to M.
• Finally, count the required number of pairs using the formula:

count = nEven * mEven + nOdd * mOdd

Below is the implementation of the above approach:

## C++

 // C++ program for the above approach#include using namespace std; // Function to count even pairsint countEvenPairs(int N, int M){     // Stores count of pairs having even sum    int count = 0;     // Stores count of even numbers up to N    int nEven = floor(N / 2);     // Stores count of odd numbers up to N    int nOdd = ceil(N / 2);     // Stores count of even numbers up to M    int mEven = floor(M / 2);     // Stores count of odd numbers up to M    int mOdd = ceil(M / 2);    count = nEven * mEven + nOdd * mOdd;     // Return the count    return count;} // Driver Codeint main(){    int N = 4;    int M = 6;    cout << countEvenPairs(N, M);    return 0;} // This code is contributed by Dharanendra L V

## Java

 // Java program for the above approachimport java.io.*; class GFG {     // Function to count even pairs    public static int countEvenPairs(        int N, int M)    {         // Stores count of pairs having even sum        int count = 0;         // Stores count of even numbers up to N        int nEven = (int)Math.floor((double)N / 2);         // Stores count of odd numbers up to N        int nOdd = (int)Math.ceil((double)N / 2);         // Stores count of even numbers up to M        int mEven = (int)Math.floor((double)M / 2);         // Stores count of odd numbers up to M        int mOdd = (int)Math.ceil((double)M / 2);         count = nEven * mEven + nOdd * mOdd;         // Return the count        return count;    }     // Driver Code    public static void main(String[] args)    {        int N = 4;        int M = 6;        System.out.print(countEvenPairs(N, M));    }}

## Python3

 # Python3 program for the above approachimport math # Function to count even pairsdef countEvenPairs(N, M):       # Stores count of pairs having even sum    count = 0;     # Stores count of even numbers up to N    nEven = int(math.floor(N / 2));     # Stores count of odd numbers up to N    nOdd = int(math.ceil(N / 2));     # Stores count of even numbers up to M    mEven = int(math.floor(M / 2));     # Stores count of odd numbers up to M    mOdd = int(math.ceil(M / 2));     count = nEven * mEven + nOdd * mOdd;     # Return the count    return count; # Driver Codeif __name__ == '__main__':    N = 4;    M = 6;    print(countEvenPairs(N, M)); # This code is contributed by 29AjayKumar

## C#

 // C# program for the above approachusing System; class GFG{   // Function to count even pairs  public static int countEvenPairs(int N, int M)  {     // Stores count of pairs having even sum    int count = 0;     // Stores count of even numbers up to N    int nEven = (int)Math.Floor((double)N / 2);     // Stores count of odd numbers up to N    int nOdd = (int)Math.Ceiling((double)N / 2);     // Stores count of even numbers up to M    int mEven = (int)Math.Floor((double)M / 2);     // Stores count of odd numbers up to M    int mOdd = (int)Math.Ceiling((double)M / 2);    count = nEven * mEven + nOdd * mOdd;     // Return the count    return count;  }   // Driver Code  public static void Main(String[] args)  {    int N = 4;    int M = 6;    Console.Write(countEvenPairs(N, M));  }} // This code is contributed by shikhasingrajput

## Javascript


Output:
12

Time Complexity: O(1)
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up