Smallest positive integer X satisfying the given equation

Given two integers N and K, the task is to find the smallest positive integer X satisfing the equation:
 

(X / K) * (X % K) = N

Examples: 

Input: N = 6, K = 3 
Output: 11 
Explanation: 
For X = 11, (11 / 3) * (11 % 3) = 3 * 2 = 6 
Therefore, the following equation satisfies.

Input: N = 4, K = 6 
Output: 10 
Explanation: 
For X = 10, (10 / 6) * (10 % 6) = 1 * 4 = 4 
Therefore, the following equation satisfies. 



Approach: 
The idea is to observe that, since (X / K) * (X % K) = N, therefore, N will be divisible by p = X % K, which is less than K. Therefore, for all i in the range [1, K) try all values of p where: 

x = p \cdot\frac{n - p}{k}

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ Program to implement
// the above approach
#include <bits/stdc++.h>
using namespace std;
  
// Function to find out the smallest
// positive integer for the equation
int findMinSoln(int n, int k)
{
    // Stores the minimum
    int minSoln = INT_MAX;
  
    // Iterate till K
    for (int i = 1; i < k; i++) {
  
        // Check if n is divisible by i
        if (n % i == 0)
            minSoln
                = min(minSoln, (n / i) * k + i);
    }
  
    // Return the answer
    return minSoln;
}
  
// Driver Code
int main()
{
    int n = 4, k = 6;
    cout << findMinSoln(n, k);
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java Program to implement
// the above approach
import java.util.*;
class GFG{
   
// Function to find out the smallest
// positive integer for the equation
static int findMinSoln(int n, int k)
{
    // Stores the minimum
    int minSoln = Integer.MAX_VALUE;
   
    // Iterate till K
    for (int i = 1; i < k; i++) 
    {
   
        // Check if n is divisible by i
        if (n % i == 0)
            minSoln = Math.min(minSoln, (n / i) * k + i);
    }
   
    // Return the answer
    return minSoln;
}
   
// Driver Code
public static void main(String[] args)
{
    int n = 4, k = 6;
    System.out.println(findMinSoln(n, k));
}
}
  
// This code is contributed by Ritik Bansal

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program to implement
# the above approach
import sys
  
# Function to find out the smallest
# positive integer for the equation
def findMinSoln(n, k):
      
    # Stores the minimum
    minSoln = sys.maxsize;
  
    # Iterate till K
    for i in range(1, k):
  
        # Check if n is divisible by i
        if (n % i == 0):
            minSoln = min(minSoln, (n // i) * k + i);
      
    # Return the answer
    return minSoln;
  
# Driver Code
if __name__ == '__main__':
      
    n = 4;
    k = 6;
      
    print(findMinSoln(n, k));
  
# This code is contributed by amal kumar choubey 

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to implement
// the above approach
using System;
  
class GFG{
  
// Function to find out the smallest
// positive integer for the equation
static int findMinSoln(int n, int k)
{
      
    // Stores the minimum
    int minSoln = int.MaxValue;
  
    // Iterate till K
    for (int i = 1; i < k; i++) 
    {
  
        // Check if n is divisible by i
        if (n % i == 0)
            minSoln = Math.Min(minSoln,
                              (n / i) * k + i);
    }
  
    // Return the answer
    return minSoln;
}
  
// Driver Code
public static void Main(String[] args)
{
    int n = 4, k = 6;
      
    Console.WriteLine(findMinSoln(n, k));
}
}
  
// This code is contributed by amal kumar choubey 

chevron_right


Output: 

10

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

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.