Skip to content
Related Articles

Related Articles

Find two distinct numbers such that their LCM lies in given range
  • Difficulty Level : Basic
  • Last Updated : 26 Mar, 2021

Given two numbers L and R, the task is to find two distinct minimum positive integers X and Y such that whose LCM lies in the range [L, R]. If there doesn’t exist any value of X and Y then print “-1”.

Examples:

Input: L = 3, R = 8 
Output: x = 3, y=6
Explanation:
LCM of 3 and 6 is 6 which is in range 3, 8

Input: L = 88, R = 90
Output: -1
Explanation:
Minimum possible x and y are 88 and 176 respectively, but 176 is greater than 90.    

Approach: The idea is to choose the value of X and Y in such a way that their LCM lies in the given range [L, R]. Below are the steps:



  1. For the minimum value of X choose L as the minimum value as this is the minimum value in the given range.
  2. Now for the value of Y choose 2*L as this is the minimum value of Y whose LCM is L.
  3. Now if the above two values of X and Y lie in the range [L, R], then this is required pair of integers with minimum possible values of X and Y.
  4. Otherwise, print “-1” as there doesn’t exist any other pair.

Below is the implementation of the above approach:

C++




// C++ program for the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to find two distinct numbers
// X and Y s.t. their LCM lies between
// L and R  and X, Y are minimum possible
void answer(int L, int R)
{
 
    // Check if 2*L lies in range L, R
    if (2 * L <= R)
 
        // Print the answer
        cout << L << ", "
             << 2 * L << "\n";
    else
        cout << -1;
}
 
// Driver Code
int main()
{
    // Given value of ranges
    int L = 3, R = 8;
 
    // Function call
    answer(L, R);
    return 0;
}

Java




// Java program for the above approach
import java.io.*;
 
class GFG{
 
// Function to find two distinct numbers
// X and Y s.t. their LCM lies between
// L and R and X, Y are minimum possible
static void answer(int L, int R)
{
 
    // Check if 2*L lies in range L, R
    if (2 * L <= R)
 
        // Print the answer
        System.out.println(L + ", " + (2 * L));
     
    else
        System.out.println("-1");
}
 
// Driver Code
public static void main(String[] args)
{
     
    // Given value of ranges
    int L = 3, R = 8;
 
    // Function call
    answer(L, R);
}
}
 
// This code is contributed by sanjoy_62

Python3




# Python3 program for the above approach
 
# Function to find two distinct numbers
# X and Y s.t. their LCM lies between
# L and R and X, Y are minimum possible
def answer(L, R):
 
    # Check if 2*L lies in range L, R
    if (2 * L <= R):
 
        # Print the answer
        print(L, ",", 2 * L)
 
    else:
        print(-1)
 
# Driver Code
 
# Given value of ranges
L = 3
R = 8
 
# Function call
answer(L, R)
 
# This code is contributed by sanjoy_62

C#




// C# program for the above approach
using System;
 
class GFG{
 
// Function to find two distinct numbers
// X and Y s.t. their LCM lies between
// L and R and X, Y are minimum possible
static void answer(int L, int R)
{
 
    // Check if 2*L lies in range L, R
    if (2 * L <= R)
     
        // Print the answer
        Console.WriteLine(L + ", " + (2 * L));
     
    else
        Console.WriteLine("-1");
}
 
// Driver Code
public static void Main()
{
     
    // Given value of ranges
    int L = 3, R = 8;
 
    // Function call
    answer(L, R);
}
}
 
// This code is contributed by sanjoy_62

Javascript




<script>
// JavaScript program for the above approac
 
// Function to find two distinct numbers
// X and Y s.t. their LCM lies between
// L and R and X, Y are minimum possible
function answer(L, R)
{
 
    // Check if 2*L lies in range L, R
    if (2 * L <= R)
 
        // Print the answer
        document.write(L + ", "
            + 2 * L + "<br>");
    else
        document.write(-1);
}
 
// Driver Code
 
    // Given value of ranges
    let L = 3, R = 8;
 
    // Function call
    answer(L, R);
 
// This code is contributed by Manoj.
</script>
Output: 
3, 6

 

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

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up
Recommended Articles
Page :