# Find minimum x such that (x % k) * (x / k) == n | Set-2

Given two positive integers n and k. Find minimum positive integer x such that the (x % k) * (x / k) == n, where % is the modulus operator and / is the integer division operator.

Examples:

Input : n = 4, k = 6
Output :10
Explanation : (10 % 6) * (10 / 6) = (4) * (1) = 4 which is equal to n

Input : n = 5, k = 5
Output : 26

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: The problem has been solved using the value of K in the Set-1. In this article, we will use the factor method to solve the above problem. Given below are the steps to solve the above problem.

• Since the equation is of the form a*b = N, so a and b will be the factors of N.
• Iterate from 1 to sqrt(N) to get all the factors.
• The factors i and n/i can be either of A or B.
1. If i is A and n/i is B then the number will be i*k + (n/i). We can check if this number is the one by comparing it with N, if it is then it is a number which satisfies the equation.
2. If i is B and n/i is A then the number will be (n/i)*k + (i). We can check if this number is the one by comparing it with N, if it is then it is a number which satisfies the equation.
• Obtain all the numbers which satisfies the equation and print the smallest among them.

Below is the implementation of the above approach.

## C++

 `// CPP Program to find the minimum ` `// positive X such that the given ` `// equation holds true ` `#include ` `using` `namespace` `std; ` ` `  `// This function gives the required ` `// answer ` `int` `minimumX(``int` `n, ``int` `k) ` `{ ` `    ``int` `mini = INT_MAX; ` ` `  `    ``// Iterate for all the factors ` `    ``for` `(``int` `i = 1; i * i <= n; i++) { ` ` `  `        ``// Check if i is a factor ` `        ``if` `(n % i == 0) { ` `            ``int` `fir = i; ` `            ``int` `sec = n / i; ` `            ``int` `num1 = fir * k + sec; ` ` `  `            ``// Consider i to be A and n/i to be B ` `            ``int` `res = (num1 / k) * (num1 % k); ` `            ``if` `(res == n) ` `                ``mini = min(num1, mini); ` ` `  `            ``int` `num2 = sec * k + fir; ` `            ``res = (num2 / k) * (num2 % k); ` ` `  `            ``// Consider i to be B and n/i to be A ` `            ``if` `(res == n) ` `                ``mini = min(num2, mini); ` `        ``} ` `    ``} ` `    ``return` `mini; ` `} ` ` `  `// Driver Code to test above function ` `int` `main() ` `{ ` `    ``int` `n = 4, k = 6; ` `    ``cout << minimumX(n, k) << endl; ` ` `  `    ``n = 5, k = 5; ` `    ``cout << minimumX(n, k) << endl; ` `    ``return` `0; ` `} `

## Java

 `// Java Program to find the minimum ` `// positive X such that the given ` `// equation holds true ` `import` `java.util.*; ` ` `  `class` `solution ` `{ ` ` `  `// This function gives the required ` `// answer ` `static` `int` `minimumX(``int` `n, ``int` `k) ` `{ ` `    ``int` `mini = Integer.MAX_VALUE; ` ` `  `    ``// Iterate for all the factors ` `    ``for` `(``int` `i = ``1``; i * i <= n; i++) { ` ` `  `        ``// Check if i is a factor ` `        ``if` `(n % i == ``0``) { ` `            ``int` `fir = i; ` `            ``int` `sec = n / i; ` `            ``int` `num1 = fir * k + sec; ` ` `  `            ``// Consider i to be A and n/i to be B ` `            ``int` `res = (num1 / k) * (num1 % k); ` `            ``if` `(res == n) ` `                ``mini = Math.min(num1, mini); ` ` `  `            ``int` `num2 = sec * k + fir; ` `            ``res = (num2 / k) * (num2 % k); ` ` `  `            ``// Consider i to be B and n/i to be A ` `            ``if` `(res == n) ` `                ``mini = Math.min(num2, mini); ` `        ``} ` `    ``} ` `    ``return` `mini; ` `} ` ` `  `// Driver Code to test above function ` `public` `static` `void` `main(String args[]) ` `{ ` `    ``int` `n = ``4``, k = ``6``; ` `    ``System.out.println(minimumX(n, k)); ` ` `  `    ``n = ``5``; ` `    ``k = ``5``; ` `    ``System.out.println(minimumX(n, k)); ` `} ` `} `

## Python3

# Python3 program to find the minimum
# positive X such that the given
# equation holds true
import sys

# This function gives the required
def minimumX(n, k):

mini = sys.maxsize

# Iterate for all the factors
i = 1
while i * i <= n : # Check if i is a factor if (n % i == 0) : fir = i sec = n // i num1 = fir * k + sec # Consider i to be A and n/i to be B res = (num1 // k) * (num1 % k) if (res == n): mini = min(num1, mini) num2 = sec * k + fir res = (num2 // k) * (num2 % k) # Consider i to be B and n/i to be A if (res == n): mini = min(num2, mini) i += 1 return mini # Driver Code if __name__ == "__main__": n = 4 k = 6 print (minimumX(n, k)) n = 5 k = 5 print (minimumX(n, k)) # This code is contributed by ita_c [tabby title = "C#"]

 `// C# Program to find the minimum  ` `// positive X such that the given  ` `// equation holds true  ` ` `  `using` `System; ` ` `  `class` `solution  ` `{  ` ` `  `// This function gives the required  ` `// answer  ` `static` `int` `minimumX(``int` `n, ``int` `k)  ` `{  ` `    ``int` `mini = ``int``.MaxValue;  ` ` `  `    ``// Iterate for all the factors  ` `    ``for` `(``int` `i = 1; i * i <= n; i++) {  ` ` `  `        ``// Check if i is a factor  ` `        ``if` `(n % i == 0) {  ` `            ``int` `fir = i;  ` `            ``int` `sec = n / i;  ` `            ``int` `num1 = fir * k + sec;  ` ` `  `            ``// Consider i to be A and n/i to be B  ` `            ``int` `res = (num1 / k) * (num1 % k);  ` `            ``if` `(res == n)  ` `                ``mini = Math.Min(num1, mini);  ` ` `  `            ``int` `num2 = sec * k + fir;  ` `            ``res = (num2 / k) * (num2 % k);  ` ` `  `            ``// Consider i to be B and n/i to be A  ` `            ``if` `(res == n)  ` `                ``mini = Math.Min(num2, mini);  ` `        ``}  ` `    ``}  ` `    ``return` `mini;  ` `}  ` ` `  `// Driver Code to test above function  ` `public` `static` `void` `Main()  ` `{  ` `    ``int` `n = 4, k = 6;  ` `    ``Console.WriteLine(minimumX(n, k));  ` ` `  `    ``n = 5;  ` `    ``k = 5;  ` `    ``Console.WriteLine(minimumX(n, k));  ` `}  ` `// This code is contributed by Ryuga ` `}  `

## PHP

 ` `

Output:

```10
26
```

Time Complexity : O(sqrt(N)), where N is the given positive integer.

My Personal Notes arrow_drop_up

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.