# Minimum and Maximum LCM among all pairs (i, j) in range [L, R]

• Last Updated : 06 Jul, 2022

Given two positive integers L and R representing a range. The task is to find the minimum and maximum possible LCM of any pair (i, j) in the range [L, R] such that L ≤ i < j ≤ R.

Examples:

Input: L = 2, R = 6
Output: 4 30
Explanations: Following are the pairs with minimum and maximum LCM in range [2, 6].
Minimum LCM –> (2, 4) = 4
Maximum LCM –> (5, 6) = 30

Input: L = 5, R = 93
Output: 10 8556

Approach: This problem can be solved by using simple Mathematics. Follow the steps below to solve the given problem.

For Minimum LCM,

• One number would be for sure the minimum number in the range [L, R].
• Choose numbers in such a way that one is a factor of the other.
• The only number with L that gives the minimum LCM is 2*L.
• Check if 2*L <= R
• If Yes, the Minimum LCM would be 2*L
• Otherwise, the Minimum LCM would be L*(L+1).

For Maximum LCM,

• One number would be for sure the maximum number in the range [L, R] that is R.
• Choose a second number such that it is co-prime with R and the product of both is maximum.
• R and R-1 will be always co-prime if R!=2.
• Therefore, R*(R-1) will be giving the maximum LCM.

Below is the implementation of the above approach:

## C++

 `// C++ program for the above approach` `#include ` `using` `namespace` `std;`   `// Function to find minimum LCM in range [L, R]` `int` `minLCM(``int` `L, ``int` `R)` `{`   `    ``// If 2*L is within the range` `    ``// then minimum LCM would be 2*L` `    ``if` `(2 * L <= R)` `        ``return` `2 * L;`   `    ``// Otherwise L * (L+1) would give` `    ``// the minimum LCM` `    ``else` `        ``return` `L * (L + 1);` `}`   `// Function to find maximum LCM in range [L, R]` `int` `maxLCM(``int` `L, ``int` `R)` `{`   `    ``// The only possible equation that will give` `    ``// the maximum LCM is R * (R-1)` `    ``return` `R * (R - 1);` `}`   `// Driver Code` `int` `main()` `{` `    ``int` `L = 2;` `    ``int` `R = 6;`   `    ``cout << minLCM(L, R) << ``' '``;` `    ``cout << maxLCM(L, R);` `}`

## Java

 `// Java program for the above approach`   `class` `GFG {`   `    ``// Function to find minimum LCM in range [L, R]` `    ``public` `static` `int` `minLCM(``int` `L, ``int` `R) {`   `        ``// If 2*L is within the range` `        ``// then minimum LCM would be 2*L` `        ``if` `(``2` `* L <= R)` `            ``return` `2` `* L;`   `        ``// Otherwise L * (L+1) would give` `        ``// the minimum LCM` `        ``else` `            ``return` `L * (L + ``1``);` `    ``}`   `    ``// Function to find maximum LCM in range [L, R]` `    ``public` `static` `int` `maxLCM(``int` `L, ``int` `R) {`   `        ``// The only possible equation that will give` `        ``// the maximum LCM is R * (R-1)` `        ``return` `R * (R - ``1``);` `    ``}`   `    ``// Driver Code` `    ``public` `static` `void` `main(String args[]) {` `        ``int` `L = ``2``;` `        ``int` `R = ``6``;`   `        ``System.out.print(minLCM(L, R) + ``" "``);` `        ``System.out.print(maxLCM(L, R));` `    ``}` `}`

## Python3

 `# Python program for the above approach`   `# Function to find minimum LCM in range [L, R]` `def` `minLCM(L, R):`   `  ``# If 2*L is within the range` `  ``# then minimum LCM would be 2*L` `  ``if` `(``2` `*` `L <``=` `R):` `    ``return` `2` `*` `L`   `  ``# Otherwise L * (L+1) would give` `  ``# the minimum LCM` `  ``else``:` `    ``return` `L ``*` `(L ``+` `1``)`   `# Function to find maximum LCM in range [L, R]` `def` `maxLCM(L, R):`   `  ``# The only possible equation that will give` `  ``# the maximum LCM is R * (R-1)` `  ``return` `R ``*` `(R ``-` `1``);`   `# Driver Code` `if` `__name__``=``=``"__main__"``:` `  `  `  ``L ``=` `2``;` `  ``R ``=` `6``;`   `  ``print``(minLCM(L, R),end``=``' '``)` `  ``print``(maxLCM(L, R))`   `#This code is contributed by Akash Jha`

## C#

 `// C# program for the above approach` `using` `System;` `class` `GFG` `{`   `    ``// Function to find minimum LCM in range [L, R]` `    ``public` `static` `int` `minLCM(``int` `L, ``int` `R)` `    ``{`   `        ``// If 2*L is within the range` `        ``// then minimum LCM would be 2*L` `        ``if` `(2 * L <= R)` `            ``return` `2 * L;`   `        ``// Otherwise L * (L+1) would give` `        ``// the minimum LCM` `        ``else` `            ``return` `L * (L + 1);` `    ``}`   `    ``// Function to find maximum LCM in range [L, R]` `    ``public` `static` `int` `maxLCM(``int` `L, ``int` `R)` `    ``{`   `        ``// The only possible equation that will give` `        ``// the maximum LCM is R * (R-1)` `        ``return` `R * (R - 1);` `    ``}`   `    ``// Driver Code` `    ``public` `static` `void` `Main()` `    ``{` `        ``int` `L = 2;` `        ``int` `R = 6;`   `        ``Console.Write(minLCM(L, R) + ``" "``);` `        ``Console.Write(maxLCM(L, R));` `    ``}` `}`

## Javascript

 ``

Output

`4 30`

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

My Personal Notes arrow_drop_up
Recommended Articles
Page :