Find pair with maximum GCD for integers in range 2 to N

Given a number N, the task is to find a pair of integers in the range [2, N] with maximum GCD.

Examples:

Input: N = 10
Output: 5
Explaination:
Maximum possible GCD between all possible pairs is 5 which occurs for the pair (10, 5).

Input: N = 13
Output: 6
Explaination:
Maximum possible GCD between all possible pairs is 6 which occurs for the pair (12, 6).

Approach:
Follow the steps below to solve the problem:



  1. If N is even, return the pair {N, N / 2}.

    Illustration:
    If N = 10, Maximum possible GCD for any pair is 5( for the pair {5, 10}).

    If N = 20, Maximum possible GCD for any pair is 10( for the pair {20, 10}).

  2. If N is odd, then return the pair{N – 1, (N – 1) / 2}.

    Illustration:
    If N = 11, Maximum possible GCD for any pair is 5( for the pair {5, 10}).

    If N = 21, Maximum possible GCD for any pair is 10( for the pair {20, 10}).

    Below is the implementation of the above approach:

    C++

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // C++ Program to find a pair of
    // integers less than or equal 
    // to N such that their GCD
    // is maximum
    #include <bits/stdc++.h>
    using namespace std;
      
    // Function to find the required
    // pair whose GCD is maximum
    void solve(int N)
    {
        // If N is even
        if (N % 2 == 0) {
      
            cout << N / 2 << " "
                 << N << endl;
        }
        // If N is odd
        else {
            cout << (N - 1) / 2 << " "
                 << (N - 1) << endl;
        }
    }
      
    // Driver Code
    int main()
    {
        int N = 10;
        solve(N);
        return 0;
    }

    chevron_right

    
    

    Java

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // Java program to find a pair of
    // integers less than or equal 
    // to N such that their GCD
    // is maximum
      
    class GFG{
      
    // Function to find the required
    // pair whose GCD is maximum
    static void solve(int N)
    {
          
        // If N is even
        if (N % 2 == 0)
        {
            System.out.print(N / 2 + " " +
                             N + "\n");
        }
          
        // If N is odd
        else
        {
            System.out.print((N - 1) / 2 + " "
                             (N - 1) + "\n");
        }
    }
      
    // Driver Code
    public static void main(String[] args)
    {
        int N = 10;
          
        solve(N);
    }
    }
      
    // This code is contributed by Amit Katiyar

    chevron_right

    
    

    Python3

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    # Python3 Program to find a pair  
    # of integers less than or equal 
    # to N such that their GCD 
    # is maximum 
      
    # Function to find the required 
    # pair whose GCD is maximum 
    def solve(N): 
          
        # If N is even 
        if (N % 2 == 0): 
            print(N // 2, N) 
              
        # If N is odd 
        else
            print((N - 1) // 2, (N - 1)) 
          
    # Driver Code 
    N = 10
    solve(N)
      
    # This code is contributed by divyamohan123

    chevron_right

    
    

    C#

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // C# program to find a pair of
    // integers less than or equal 
    // to N such that their GCD
    // is maximum
    using System;
    class GFG{
      
    // Function to find the required
    // pair whose GCD is maximum
    static void solve(int N)
    {
          
        // If N is even
        if (N % 2 == 0)
        {
            Console.Write(N / 2 + " " +
                          N + "\n");
        }
          
        // If N is odd
        else
        {
            Console.Write((N - 1) / 2 + " "
                          (N - 1) + "\n");
        }
    }
      
    // Driver Code
    public static void Main(String[] args)
    {
        int N = 10;
          
        solve(N);
    }
    }
      
    // This code is contributed by shivanisinghss2110

    chevron_right

    
    

    Output:

    5 10
    

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

    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.




    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.