Maximum count of common divisors of A and B such that all are co-primes to one another

• Last Updated : 07 May, 2021

Given two integers A and B. The task is to find the count of maximum elements from the common divisors of A and B such that all selected elements are co-prime to one another.
Examples:

Input: A = 12, B = 18
Output:
Common divisors of A and B are 1, 2, 3 and 6.
Select 1, 2, and 3. All the pairs are co primes to
one another i.e. gcd(1, 2) = gcd(1, 3) = gcd(2, 3) = 1.
Input: A = 1, B = 3
Output:

Approach: It can be observed that all the common factors of A and B must be a factor of their gcd. And, in order for the factors of this gcd to be co-prime to one another, one element of the pair must be either 1 or both the elements must be prime. So the answer will be 1 more than the count of prime divisors of gcd(A, B). Note that 1 is added because 1 can also be a part of the chosen divisors as its gcd with the other pairs will always be 1.
Below is the implementation of the above approach:

C++

 // C++ implementation of the approach#include using namespace std; // Function to return the count of common factors// of a and b such that all the elements// are co-prime to one anotherint maxCommonFactors(int a, int b){    // GCD of a and b    int gcd = __gcd(a, b);     // Include 1 initially    int ans = 1;     // Find all the prime factors of the gcd    for (int i = 2; i * i <= gcd; i++) {        if (gcd % i == 0) {            ans++;            while (gcd % i == 0)                gcd /= i;        }    }     // If gcd is prime    if (gcd != 1)        ans++;     // Return the required answer    return ans;} // Driver codeint main(){    int a = 12, b = 18;     cout << maxCommonFactors(a, b);     return 0;}

Java

 // Java implementation of the approachclass GFG{     static int gcd(int a, int b){    if (b == 0)        return a;    return gcd(b, a % b);} // Function to return the count of common factors// of a and b such that all the elements// are co-prime to one anotherstatic int maxCommonFactors(int a, int b){         // GCD of a and b    int __gcd = gcd(a, b);     // Include 1 initially    int ans = 1;     // Find all the prime factors of the gcd    for (int i = 2; i * i <= __gcd; i++)    {        if (__gcd % i == 0)        {            ans++;            while (__gcd % i == 0)                __gcd /= i;        }    }     // If gcd is prime    if (__gcd != 1)        ans++;     // Return the required answer    return ans;} // Driver codepublic static void main (String[] args){    int a = 12, b = 18;     System.out.println(maxCommonFactors(a, b));}} // This code is contributed by AnkitRai01

Python3

 # Python3 implementation of the approachimport math # Function to return the count of common factors# of a and b such that all the elements# are co-prime to one anotherdef maxCommonFactors(a, b):         # GCD of a and b    gcd = math.gcd(a, b)     # Include 1 initially    ans = 1;     # Find all the prime factors of the gcd    i = 2    while (i * i <= gcd):        if (gcd % i == 0):            ans += 1            while (gcd % i == 0):                gcd = gcd // i        i += 1                        # If gcd is prime    if (gcd != 1):        ans += 1     # Return the required answer    return ans     # Driver codea = 12b = 18print(maxCommonFactors(a, b)) # This code is contributed by# divyamohan123

C#

 // C# implementation of the above approachusing System;         class GFG{         static int gcd(int a, int b)    {        if (b == 0)            return a;        return gcd(b, a % b);    }     // Function to return the count of common factors    // of a and b such that all the elements    // are co-prime to one another    static int maxCommonFactors(int a, int b)    {         // GCD of a and b        int __gcd = gcd(a, b);         // Include 1 initially        int ans = 1;         // Find all the prime factors of the gcd        for (int i = 2; i * i <= __gcd; i++)        {            if (__gcd % i == 0)            {                ans++;                while (__gcd % i == 0)                    __gcd /= i;            }        }         // If gcd is prime        if (__gcd != 1)            ans++;         // Return the required answer        return ans;    }     // Driver code    public static void Main (String[] args)    {        int a = 12, b = 18;         Console.WriteLine(maxCommonFactors(a, b));    }} // This code is contributed by Rajput-Ji

Javascript


Output:
3

My Personal Notes arrow_drop_up