Open In App

Minimum value that divides one number and divisible by other

Given two integer p and q, the task is to find the minimum possible number x such that q % x = 0 and x % p = 0. If the conditions aren’t true for any number then print -1.
Examples: 
 

Input: p = 3, q = 99 
Output:
99 % 3 = 0 
3 % 3 = 0
Input: p = 2, q = 7 
Output: -1 
 

 

Approach: If a number x satisfies the given condition then it’s obvious that q will be divided by p i.e. q % p = 0 because x is a multiple of p and q is a multiple of x
So the minimum possible value of x will be the GCD of p and q and when q is not divisible by p then no number will satisfy the given condition.
Below is the implementation of the above approach: 
 




// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to return the minimum valid number
// that satisfies the given conditions
int minValidNumber(int p, int q)
{
    // If possible
    if (q % p == 0)
        return __gcd(p, q);
    else
        return -1;
}
 
// Driver Code
int main()
{
    int p = 2, q = 6;
    cout << minValidNumber(p, q);
    return 0;
}




//Java  implementation of the approach
 
import java.io.*;
 
class GFG {
     
    // Function to calculate gcd
    static int __gcd(int a, int b)
    {
         
        // Everything divides 0
        if (a == 0 || b == 0)
            return 0;
     
        // base case
        if (a == b)
            return a;
     
        // a is greater
        if (a > b)
            return __gcd(a - b, b);
             
        return __gcd(a, b - a);
    }
 
// Function to return the minimum valid number
// that satisfies the given conditions
static int minValidNumber(int p, int q)
{
    // If possible
    if (q % p == 0)
        return __gcd(p, q);
    else
        return -1;
}
 
// Driver Code
    public static void main (String[] args) {
        int p = 2, q = 6;
        System.out.print(minValidNumber(p, q));
 
 
    // THis code is contributed by  Sachin.
    }
}




# Python3 implementation of the approach
from math import gcd
 
# Function to return the minimum
# valid number that satisfies the
# given conditions
def minValidNumber(p, q) :
 
    # If possible
    if (q % p == 0) :
        return gcd(p, q)
    else :
        return -1
 
# Driver Code
if __name__ == "__main__" :
 
    p, q = 2, 6;
    print(minValidNumber(p, q))
 
# This code is contributed by Ryuga




// C# implementation of the approach
using System;
 
class GFG
{
    // Function to calculate gcd
    static int __gcd(int a, int b)
    {
          
        // Everything divides 0
        if (a == 0 || b == 0)
            return 0;
      
        // base case
        if (a == b)
            return a;
      
        // a is greater
        if (a > b)
            return __gcd(a - b, b);
              
        return __gcd(a, b - a);
    }
 
// Function to return the minimum valid number
// that satisfies the given conditions
static int minValidNumber(int p, int q)
{
    // If possible
    if (q % p == 0)
        return __gcd(p, q);
    else
        return -1;
}
 
// Driver Code
public static void Main()
{
    int p = 2, q = 6;
    Console.Write(minValidNumber(p, q));
}
}
 
// THis code is contributed
// by Mukul Singh




<?php
// Php implementation of the approach
 
function gcd($a, $b)
{
 
    // Everything divides 0
    if($b == 0)
 
        return $a ;
 
    return gcd($b , $a % $b);
}
 
// Function to return the minimum valid
// number that satisfies the given conditions
function minValidNumber($p, $q)
{
    // If possible
    if ($q % $p == 0)
        return gcd($p, $q);
    else
        return -1;
}
 
// Driver Code
$p = 2;
$q = 6;
echo minValidNumber($p, $q);
 
// This code is contributed by ita_c
?>




<script>
 
    // Javascript implementation of the approach
     
    // Function to calculate gcd
    function __gcd(a, b)
    {
           
        // Everything divides 0 
        if (a == 0 || b == 0)
            return 0;
       
        // base case
        if (a == b)
            return a;
       
        // a is greater
        if (a > b)
            return __gcd(a - b, b);
               
        return __gcd(a, b - a);
    }
     
    // Function to return the minimum valid number
    // that satisfies the given conditions
    function minValidNumber(p, q)
    {
        // If possible
        if (q % p == 0)
            return __gcd(p, q);
        else
            return -1;
    }  
     
    let p = 2, q = 6;
    document.write(minValidNumber(p, q));
     
</script>

Output: 
2

 

Time Complexity: O(logn)

Auxiliary Space: O(1)


Article Tags :