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

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 = 6Output:4 30Explanations: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 = 93Output: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)**.

- If Yes, the Minimum LCM would be

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 <bits/stdc++.h>` `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

`<script>` `// Javascript program for the above approach` `// Function to find minimum LCM in range [L, R]` `function` `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]` `function` `maxLCM(L, R) {` ` ` `// The only possible equation that will give` ` ` `// the maximum LCM is R * (R-1)` ` ` `return` `R * (R - 1);` `}` `// Driver Code` `let L = 2;` `let R = 6;` `document.write(minLCM(L, R) + ` `' '` `);` `document.write(maxLCM(L, R));` `</script>` |

**Output**

4 30

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