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: 3
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++
// 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
//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
# 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#
// 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 // 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 ?> |
Javascript
<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> |
2
Time Complexity: O(logn)
Auxiliary Space: O(1)