Given an integer **X**, the task is to find two integers **A** and **B** such that **LCM(A, B) = X** and the difference between the **A** and **B** is minimum possible.

**Examples:**

Input:X = 6Output:2 3

LCM(2, 3) = 6 and (3 – 2) = 1

which is the minimum possible.

InputX = 7Output:1 7

**Approach:** An approach to solve this problem is to find all the factors of the given number using the approach discussed in this article and then find the pair **(A, B)** that satisfies the given conditions and has the minimum possible difference.

Below is the implementation of the above approach:

## C++

`// C++ implementation of the approach` `#include <bits/stdc++.h>` `using` `namespace` `std;` ` ` `// Function to return the LCM of a and b` `int` `lcm(` `int` `a, ` `int` `b)` `{` ` ` `return` `(a / __gcd(a, b) * b);` `}` ` ` `// Function to find and print the two numbers` `void` `findNums(` `int` `x)` `{` ` ` ` ` `int` `ans;` ` ` ` ` `// To find the factors` ` ` `for` `(` `int` `i = 1; i <= ` `sqrt` `(x); i++) {` ` ` ` ` `// To check if i is a factor of x and` ` ` `// the minimum possible number` ` ` `// satisfying the given conditions` ` ` `if` `(x % i == 0 && lcm(i, x / i) == x) {` ` ` ` ` `ans = i;` ` ` `}` ` ` `}` ` ` `cout << ans << ` `" "` `<< (x / ans);` `}` ` ` `// Driver code` `int` `main()` `{` ` ` `int` `x = 12;` ` ` ` ` `findNums(x);` ` ` ` ` `return` `0;` `}` |

## Java

`// Java implementation of the approach` `class` `GFG` `{` ` ` ` ` `// Function to return the LCM of a and b` ` ` `static` `int` `lcm(` `int` `a, ` `int` `b)` ` ` `{` ` ` `return` `(a / __gcd(a, b) * b);` ` ` `}` ` ` ` ` `static` `int` `__gcd(` `int` `a, ` `int` `b) ` ` ` `{` ` ` `return` `b == ` `0` `? a : __gcd(b, a % b);` ` ` `}` ` ` ` ` `// Function to find and print the two numbers` ` ` `static` `void` `findNums(` `int` `x)` ` ` `{` ` ` ` ` `int` `ans = -` `1` `;` ` ` ` ` `// To find the factors` ` ` `for` `(` `int` `i = ` `1` `; i <= Math.sqrt(x); i++)` ` ` `{` ` ` ` ` `// To check if i is a factor of x and` ` ` `// the minimum possible number` ` ` `// satisfying the given conditions` ` ` `if` `(x % i == ` `0` `&& lcm(i, x / i) == x)` ` ` `{` ` ` ` ` `ans = i;` ` ` `}` ` ` `}` ` ` `System.out.print(ans + ` `" "` `+ (x / ans));` ` ` `}` ` ` ` ` `// Driver code` ` ` `public` `static` `void` `main(String[] args) ` ` ` `{` ` ` `int` `x = ` `12` `;` ` ` ` ` `findNums(x);` ` ` `}` `}` ` ` `// This code is contributed by 29AjayKumar` |

## Python3

`# Python3 implementation of the approach` `from` `math ` `import` `gcd as __gcd, sqrt, ceil` ` ` `# Function to return the LCM of a and b` `def` `lcm(a, b):` ` ` `return` `(a ` `/` `/` `__gcd(a, b) ` `*` `b)` ` ` `# Function to find and print the two numbers` `def` `findNums(x):` ` ` ` ` `ans ` `=` `0` ` ` ` ` `# To find the factors` ` ` `for` `i ` `in` `range` `(` `1` `, ceil(sqrt(x))):` ` ` ` ` `# To check if i is a factor of x and` ` ` `# the minimum possible number` ` ` `# satisfying the given conditions` ` ` `if` `(x ` `%` `i ` `=` `=` `0` `and` `lcm(i, x ` `/` `/` `i) ` `=` `=` `x):` ` ` ` ` `ans ` `=` `i` ` ` ` ` `print` `(ans, (x` `/` `/` `ans))` ` ` `# Driver code` `x ` `=` `12` ` ` `findNums(x)` ` ` `# This code is contributed by mohit kumar 29` |

## C#

`// C# implementation of the approach` `using` `System;` ` ` `class` `GFG` `{` ` ` ` ` `// Function to return the LCM of a and b` ` ` `static` `int` `lcm(` `int` `a, ` `int` `b)` ` ` `{` ` ` `return` `(a / __gcd(a, b) * b);` ` ` `}` ` ` ` ` `static` `int` `__gcd(` `int` `a, ` `int` `b) ` ` ` `{` ` ` `return` `b == 0 ? a : __gcd(b, a % b);` ` ` `}` ` ` ` ` `// Function to find and print the two numbers` ` ` `static` `void` `findNums(` `int` `x)` ` ` `{` ` ` ` ` `int` `ans = -1;` ` ` ` ` `// To find the factors` ` ` `for` `(` `int` `i = 1; i <= Math.Sqrt(x); i++)` ` ` `{` ` ` ` ` `// To check if i is a factor of x and` ` ` `// the minimum possible number` ` ` `// satisfying the given conditions` ` ` `if` `(x % i == 0 && lcm(i, x / i) == x)` ` ` `{` ` ` ` ` `ans = i;` ` ` `}` ` ` `}` ` ` `Console.Write(ans + ` `" "` `+ (x / ans));` ` ` `}` ` ` ` ` `// Driver code` ` ` `public` `static` `void` `Main(String[] args) ` ` ` `{` ` ` `int` `x = 12;` ` ` ` ` `findNums(x);` ` ` `}` `}` ` ` `// This code is contributed by 29AjayKumar` |

**Output:**

3 4

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****.**