Open In App

Find any pair with given GCD and LCM

Given gcd G and lcm L. The task is to print any pair which has gcd G and lcm L.
Examples: 
 

Input: G = 3, L = 12 
Output: 3, 12

Input: G = 1, L = 10 
Output: 1, 10

 



A normal solution will be to perform iteration over all the factor pairs of g*l and check if any pair has gcd g and lcm as l. If they have, then the pair will be the answer.
Below is the implementation of the above approach.
 




// C++ program to print any pair
// with a given gcd G and lcm L
#include <bits/stdc++.h>
using namespace std;
 
// Function to print the pairs
void printPair(int g, int l)
{
    int n = g * l;
 
    // iterate over all factor pairs
    for (int i = 1; i * i <= n; i++) {
 
        // check if a factor
        if (n % i == 0) {
            int first = i;
            int second = n / i;
 
            // find gcd
            int gcd = __gcd(first, second);
 
            // check if gcd is same as given g
            // and lcm is same as lcm l
            if (gcd == g && l % first == 0 && l % second == 0) {
                cout << first << " " << second;
                return;
            }
        }
    }
}
 
// Driver Code
int main()
{
    int g = 3, l = 12;
    printPair(g, l);
    return 0;
}




// Java program to print any pair
// with a given gcd G and lcm L
 
import java.math.BigInteger;
 
class GFG {
 
// Function to print the pairs
    static void printPair(int g, int l) {
        int n = g * l;
 
        // iterate over all factor pairs
        for (int i = 1; i * i <= n; i++) {
 
            // check if a factor
            if (n % i == 0) {
                int first = i;
                int second = n / i;
 
                // find gcd
                int gcd = __gcd(first, second);
 
                // check if gcd is same as given g
                // and lcm is same as lcm l
                if (gcd == g && l % first == 0 && l % second == 0) {
                    System.out.println(first + " " + second);
                    return;
                }
            }
        }
    }
//Function return GCD of two given number
 
    private static int __gcd(int a, int b) {
        // there's a better way to do this. I forget.
        BigInteger b1 = new BigInteger("" + a);
        BigInteger b2 = new BigInteger("" + b);
        BigInteger gcd = b1.gcd(b2);
        return gcd.intValue();
    }
// Driver function
 
    public static void main(String[] args) {
        int g = 3, l = 12;
        printPair(g, l);
 
    }
}
// This code is contributed by RAJPUT-JI




# Python program to print any pair
# with a given gcd G and lcm L
  
# Function to print the pairs
def printPair(g, l):
    n = g * l;
  
    # iterate over all factor pairs
    for i in range(1,n+1):
  
        # check if a factor
        if (n % i == 0):
            first = i;
            second = n // i;
  
            # find gcd
            gcd = __gcd(first, second);
  
            # check if gcd is same as given g
            # and lcm is same as lcm l
            if (gcd == g and l % first == 0 and
                              l % second == 0):
                print(first , " " , second);
                return;
 
  
# Function return GCD of two given number
def __gcd(a, b):
    if(b==0):
        return a;
    else:
        return __gcd(b, a % b);
  
# Driver Code
g = 3;
l = 12;
printPair(g, l);
 
# This code is contributed by Princi Singh




// C# program to print any pair
// with a given gcd G and lcm L
using System;
public class GFG {
 
// Function to print the pairs
    static void printPair(int g, int l) {
        int n = g * l;
 
        // iterate over all factor pairs
        for (int i = 1; i * i <= n; i++) {
 
            // check if a factor
            if (n % i == 0) {
                int first = i;
                int second = n / i;
 
                // find gcd
                int gcd = __gcd(first, second);
 
                // check if gcd is same as given g
                // and lcm is same as lcm l
                if (gcd == g && l % first == 0 && l % second == 0) {
                    Console.WriteLine(first + " " + second);
                    return;
                }
            }
        }
    }
//Function return GCD of two given number
 
    private static int __gcd(int a, int b) {
        return b == 0 ? a : __gcd(b, a % b);
    }
// Driver function
 
    public static void Main() {
        int g = 3, l = 12;
        printPair(g, l);
 
    }
}
 
// This code is contributed by RAJPUT-JI




<?php
// PHP program to print any pair
// with a given gcd G and lcm L
 
// Function to print the pairs
function printPair($g, $l)
{
    $n = $g * $l;
 
    // iterate over all factor pairs
    for ($i = 1; $i * $i <= $n; $i++)
    {
 
        // check if a factor
        if ($n % $i == 0)
        {
            $first = $i;
            $second = (int)$n / $i;
 
            // find gcd
            $gcd = __gcd($first, $second);
 
            // check if gcd is same as given g
            // and lcm is same as lcm l
            if ($gcd == $g && $l % $first == 0 &&
                              $l % $second == 0)
            {
                echo $first , " " , $second;
                return;
            }
        }
    }
}
 
// Function return GCD of two given number
function __gcd($a, $b)
{
    return $b == 0 ? $a : __gcd($b, $a % $b);
}
 
// Driver Code
$g = 3;
$l = 12;
printPair($g, $l);
 
// This code is contributed by ajit




<script>
// javascript program to print any pair
// with a given gcd G and lcm L
 
    // Function to print the pairs
    function printPair(g , l) {
        var n = g * l;
 
        // iterate over all factor pairs
        for (i = 1; i * i <= n; i++) {
 
            // check if a factor
            if (n % i == 0) {
                var first = i;
                var second = n / i;
 
                // find gcd
                var gcd = __gcd(first, second);
 
                // check if gcd is same as given g
                // and lcm is same as lcm l
                if (gcd == g && l % first == 0 && l % second == 0) {
                    document.write(first + " " + second);
                    return;
                }
            }
        }
    }
     
// Function return GCD of two given number
    function __gcd(a, b)
{
    return b == 0 ? a : __gcd(b, a % b);
}
    // Driver function
        var g = 3, l = 12;
        printPair(g, l);
 
// This code is contributed by aashish1995
</script>

Output: 
 



3 12

Time Complexity: O(sqrt(g*l))

Auxiliary Space: O(1)
An efficient solution will be to observe that the lcm is always divisible by gcd, hence the answer can be obtained in O(1). One of the numbers will be the gcd G itself and the other will be the lcm L.
Below is the implementation of the above approach. 
 




// C++ program to print any pair
// with a given gcd G and lcm L
#include <iostream>
using namespace std;
 
// Function to print the pairs
void printPair(int g, int l)
{
    cout << g << " " << l;
}
 
// Driver Code
int main()
{
    int g = 3, l = 12;
    printPair(g, l);
    return 0;
}




// Java program to print any pair
// with a given gcd G and lcm L
 
import java.io.*;
 
class GFG {
     
 
 
// Function to print the pairs
 static void printPair(int g, int l)
{
    System.out.print( g + " " + l);
}
 
// Driver Code
    public static void main (String[] args) {
    int g = 3, l = 12;
    printPair(g, l);
    }
}
// This code is contributed by inder_verma.




# Python 3 program to print any pair
# with a given gcd G and lcm L
 
# Function to print the pairs
def printPair(g, l):
    print(g, l)
 
# Driver Code
g = 3; l = 12;
printPair(g, l);
 
# This code is contributed
# by Akanksha Rai




// C# program to print any pair
// with a given gcd G and lcm L
using System;
 
class GFG
{
     
// Function to print the pairs
static void printPair(int g, int l)
{
    Console.Write( g + " " + l);
}
 
// Driver Code
public static void Main ()
{
    int g = 3, l = 12;
    printPair(g, l);
}
}
 
// This code is contributed
// by Subhadeep




<?php
// PHP program to print any pair
// with a given gcd G and lcm L
 
// Function to print the pairs
function printPair($g, $l)
{
    echo $g ;
    echo (" ");
    echo $l;
}
 
// Driver Code
$g = 3;
$l = 12;
printPair($g, $l);
 
// This code is contributed
// by Shivi_Aggarwal
?>




<script>
// javascript program to print any pair
// with a given gcd G and lcm L
// Function to print the pairs
    function printPair(g, l)
    {
        document.write(g + " " + l);
    }
 
    // Driver Code
        var g = 3, l = 12;
        printPair(g, l);
 
// This code is contributed by gauravrajput1
</script>

Output: 
 

3 12

Time Complexity: O(1)

Auxiliary Space: O(1)
 


Article Tags :