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

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

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
  
// Function to count possible pairs
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
    cout << x / 2 << "\n";
}
  
// Driver code
int main()
{
  
    int L, R;
  
    L = 1, R = 8;
    CountPair(L, R);
  
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

    
// Java implementation of the approach
import java.util.*;
class solution
{
  
// Function to count possible pairs
static 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 code
public static void main(String args[])
{
  
    int L, R;
  
    L = 1; R = 8;
    CountPair(L, R);
  
}
}
//contributed by Arnab Kundu

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 implementation of 
# the approach 
  
# Function to count possible 
# pairs
def 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 code
if __name__=='__main__':
    L,R=1,8
    CountPair(L,R)
      
# This code is contributed by 
# Indrajit Sinha.

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# implementation of the approach
using System;
class GFG
{
  
// Function to count possible pairs
static 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 code
public static void Main()
{
    int L, R;
  
    L = 1; R = 8;
    CountPair(L, R);
}
}
  
// This code is contributed 
// by inder_verma..

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP implementation of the above approach
  
// Function to count possible pairs
function 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
    echo $x / 2, "\n";
}
  
// Driver code 
$L = 1;
$R = 8;
CountPair($L, $R);
  
// This code is contributed by ANKITRAI1 
?>

chevron_right


Output:

4

Complexity: O(1)



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

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.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.