All possible co-prime distinct element pairs within a range [L, R]

• Difficulty Level : Basic
• Last Updated : 21 May, 2021

Given a range [L, R], the task is to find all possible co-prime pairs from the range such that an element doesn’t appear in more than a single pair.
Examples:

Input : L=1 ; R=6
Output : 3
The answer is 3 [(1, 2) (3, 4) (5, 6)],
all these pairs have GCD 1.

Input : L=2 ; R=4
Output : 1
The answer is 1 [(2, 3) or (3, 4)]
as '3' can only be chosen for a single pair.

Approach: The key observation of the problem is that the numbers with the difference of ‘1’ are always relatively prime to each other i.e. co-primes.
GCD of this pair is always ‘1’. So, the answer will be (R-L+1)/2 [ (total count of numbers in range) / 2 ]

• If R-L+1 is odd then there will be one element left which can not form a pair.
• If R-L+1 is even then all elements can form pairs.

Below is the implementation of the above approach:

C++

 // C++ implementation of the approach#include using namespace std; // Function to count possible pairsvoid CountPair(int L, int R){     // total count of numbers in range    int x = (R - L + 1);     // Note that if 'x' is odd then    // there will be '1' element left    // which can't form a pair     // printing count of pairs    cout << x / 2 << "\n";} // Driver codeint main(){     int L, R;     L = 1, R = 8;    CountPair(L, R);     return 0;}

Java

 // Java implementation of the approachimport java.util.*;class solution{ // Function to count possible pairsstatic void CountPair(int L, int R){     // total count of numbers in range    int x = (R - L + 1);     // Note that if 'x' is odd then    // there will be '1' element left    // which can't form a pair     // printing count of pairs    System.out.println(x / 2 + "\n");} // Driver codepublic static void main(String args[]){     int L, R;     L = 1; R = 8;    CountPair(L, R); }}//contributed by Arnab Kundu

Python3

 # Python3 implementation of# the approach # Function to count possible# pairsdef CountPair(L,R):     # total count of numbers    # in range    x=(R-L+1)     # Note that if 'x' is odd then    # there will be '1' element left    # which can't form a pair    # printing count of pairs    print(x//2) # Driver codeif __name__=='__main__':    L,R=1,8    CountPair(L,R)     # This code is contributed by# Indrajit Sinha.

C#

 // C# implementation of the approachusing System;class GFG{ // Function to count possible pairsstatic void CountPair(int L, int R){     // total count of numbers in range    int x = (R - L + 1);     // Note that if 'x' is odd then    // there will be '1' element left    // which can't form a pair     // printing count of pairs    Console.WriteLine(x / 2 + "\n");} // Driver codepublic static void Main(){    int L, R;     L = 1; R = 8;    CountPair(L, R);}} // This code is contributed// by inder_verma..



Javascript


Output:
4

Complexity: O(1)

My Personal Notes arrow_drop_up