# Check if a number is divisible by all prime divisors of another number

Given two integers. We need to find if the first number x is divisible by all prime divisors of y.

Examples :

Input  : x = 120, y = 75
Output : Yes
Explanation :
120 = (2^3)*3*5
75  = 3*(5^2)
120 is divisible by both 3 and 5 which
are the prime divisors of 75. Hence,

Input  :  x = 15, y = 6
Output : No
Explanation :
15 = 3*5.
6 = 2*3,
15 is not divisible by 2 which is a
prime divisor of 6. Hence, answer
is "No".

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

A simple solution is to find all prime factors of y. For every prime factor, check if it divides x or not.

An efficient solution is based on below facts.
1) if y == 1, then it no prime divisors. Hence answer is “Yes”
2) We find GCD of x and y.
a) If GCD == 1, then clearly there are no common divisors of x and y, hence answer is “No”.
b) If GCD > 1, the GCD contains prime divisors which divide x also. Now, we have all unique prime divisor if and only if y/GCD has such unique prime divisor. So we have to find uniqueness for pair (x, y/GCD) using recursion.

## C++

 // CPP program to find if all prime factors // of y divide x. #include using namespace std;    // Returns true if all prime factors of y  // divide x. bool isDivisible(int x, int y) {     if (y == 1)         return true;        if (__gcd(x, y) == 1)         return false;     return isDivisible(x, y / gcd); }    // Driver Code int main() {     int x = 18, y = 12;     if (isDivisible(x, y))         cout << "Yes" << endl;     else         cout << "No" << endl;     return 0; }

## Java

 // Java program to find if all  // prime factors of y divide x. class Divisible  {     public static int gcd(int a, int b) {        return b == 0 ? a : gcd(b, a % b); }            // Returns true if all prime factors     // of y divide x.     static boolean isDivisible(int x, int y)     {         if (y == 1)             return true;                        int z = gcd(x, y);                if (z == 1)             return false;                return isDivisible(x, y / z);     }        // Driver program to test above functions     public static void main(String[] args)      {         int x = 18, y = 12;         if (isDivisible(x, y))             System.out.println("Yes");         else             System.out.println("No");     } } // This code is contributed by Prerna Saini

## Python3

 # python program to find if all # prime factors of y divide x.    def gcd(a, b):     if(b == 0):         return a      else:         return gcd(b, a % b)        # Returns true if all prime  # factors of y divide x. def isDivisible(x,y):            if (y == 1):         return 1        z = gcd(x, y);            if (z == 1):         return false;            return isDivisible(x, y / z);    # Driver Code x = 18 y = 12 if (isDivisible(x, y)):     print("Yes") else:     print("No")    # This code is contributed by Sam007

## C#

 // C# program to find if all  // prime factors of y divide x. using System;    class GFG {            public static int gcd(int a, int b)     {          return b == 0 ? a : gcd(b, a % b);     }            // Returns true if all prime factors     // of y divide x.     static bool isDivisible(int x, int y)     {         if (y == 1)             return true;                        int z = gcd(x, y);                if (z == 1)             return false;                return isDivisible(x, y / z);     }        // Driver program to test above functions     public static void Main()      {         int x = 18, y = 12;                    if (isDivisible(x, y))             Console.WriteLine("Yes");         else             Console.WriteLine("No");     } }    // This code is contributed by vt_m.

## PHP



Output :

Yes

Time Complexity:Time complexity for calculating GCD is O(log min(x, y)), and recursion will terminate after log y steps because we are reducing it by a factor greater than one. Overall Time complexity: O(log2y)

This article is contributed by Harsha Mogali. 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.

My Personal Notes arrow_drop_up

Improved By : vt_m, Sam007

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.