Find any pair with given GCD and LCM
Last Updated :
31 Aug, 2022
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++
#include <bits/stdc++.h>
using namespace std;
void printPair( int g, int l)
{
int n = g * l;
for ( int i = 1; i * i <= n; i++) {
if (n % i == 0) {
int first = i;
int second = n / i;
int gcd = __gcd(first, second);
if (gcd == g && l % first == 0 && l % second == 0) {
cout << first << " " << second;
return ;
}
}
}
}
int main()
{
int g = 3, l = 12;
printPair(g, l);
return 0;
}
|
Java
import java.math.BigInteger;
class GFG {
static void printPair( int g, int l) {
int n = g * l;
for ( int i = 1 ; i * i <= n; i++) {
if (n % i == 0 ) {
int first = i;
int second = n / i;
int gcd = __gcd(first, second);
if (gcd == g && l % first == 0 && l % second == 0 ) {
System.out.println(first + " " + second);
return ;
}
}
}
}
private static int __gcd( int a, int b) {
BigInteger b1 = new BigInteger( "" + a);
BigInteger b2 = new BigInteger( "" + b);
BigInteger gcd = b1.gcd(b2);
return gcd.intValue();
}
public static void main(String[] args) {
int g = 3 , l = 12 ;
printPair(g, l);
}
}
|
Python3
def printPair(g, l):
n = g * l;
for i in range ( 1 ,n + 1 ):
if (n % i = = 0 ):
first = i;
second = n / / i;
gcd = __gcd(first, second);
if (gcd = = g and l % first = = 0 and
l % second = = 0 ):
print (first , " " , second);
return ;
def __gcd(a, b):
if (b = = 0 ):
return a;
else :
return __gcd(b, a % b);
g = 3 ;
l = 12 ;
printPair(g, l);
|
C#
using System;
public class GFG {
static void printPair( int g, int l) {
int n = g * l;
for ( int i = 1; i * i <= n; i++) {
if (n % i == 0) {
int first = i;
int second = n / i;
int gcd = __gcd(first, second);
if (gcd == g && l % first == 0 && l % second == 0) {
Console.WriteLine(first + " " + second);
return ;
}
}
}
}
private static int __gcd( int a, int b) {
return b == 0 ? a : __gcd(b, a % b);
}
public static void Main() {
int g = 3, l = 12;
printPair(g, l);
}
}
|
PHP
<?php
function printPair( $g , $l )
{
$n = $g * $l ;
for ( $i = 1; $i * $i <= $n ; $i ++)
{
if ( $n % $i == 0)
{
$first = $i ;
$second = (int) $n / $i ;
$gcd = __gcd( $first , $second );
if ( $gcd == $g && $l % $first == 0 &&
$l % $second == 0)
{
echo $first , " " , $second ;
return ;
}
}
}
}
function __gcd( $a , $b )
{
return $b == 0 ? $a : __gcd( $b , $a % $b );
}
$g = 3;
$l = 12;
printPair( $g , $l );
|
Javascript
<script>
function printPair(g , l) {
var n = g * l;
for (i = 1; i * i <= n; i++) {
if (n % i == 0) {
var first = i;
var second = n / i;
var gcd = __gcd(first, second);
if (gcd == g && l % first == 0 && l % second == 0) {
document.write(first + " " + second);
return ;
}
}
}
}
function __gcd(a, b)
{
return b == 0 ? a : __gcd(b, a % b);
}
var g = 3, l = 12;
printPair(g, l);
</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++
#include <iostream>
using namespace std;
void printPair( int g, int l)
{
cout << g << " " << l;
}
int main()
{
int g = 3, l = 12;
printPair(g, l);
return 0;
}
|
Java
import java.io.*;
class GFG {
static void printPair( int g, int l)
{
System.out.print( g + " " + l);
}
public static void main (String[] args) {
int g = 3 , l = 12 ;
printPair(g, l);
}
}
|
Python 3
def printPair(g, l):
print (g, l)
g = 3 ; l = 12 ;
printPair(g, l);
|
C#
using System;
class GFG
{
static void printPair( int g, int l)
{
Console.Write( g + " " + l);
}
public static void Main ()
{
int g = 3, l = 12;
printPair(g, l);
}
}
|
PHP
<?php
function printPair( $g , $l )
{
echo $g ;
echo ( " " );
echo $l ;
}
$g = 3;
$l = 12;
printPair( $g , $l );
?>
|
Javascript
<script>
function printPair(g, l)
{
document.write(g + " " + l);
}
var g = 3, l = 12;
printPair(g, l);
</script>
|
Output:
3 12
Time Complexity: O(1)
Auxiliary Space: O(1)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...