C++ Program for Common Divisors of Two Numbers?


Here we will see how we can get the number of common divisors of two numbers. We are not going to find all common divisors, but we will count how many common divisors are there. If two numbers are like 12 and 24, then common divisors are 1, 2, 3, 4, 6, 12. So there are 6 common divisors, so the answer will be 6.

Algorithm

countCommonDivisor(a, b)

begin
   count := 0
   gcd := gcd of a and b
   for i := 1 to square root of gcd, do
      if gcd is divisible by 0, then
         if gcd / i = i, then
            count := count + 1
         else
            count := count + 2
         enf if
      end if
   done
   return count
end

Example

 Live Demo

#include<iostream>
#include<cmath>
using namespace std;
int gcd(int a, int b) {
   if (a == 0)
      return b;
   return gcd(b%a, a);
}
int countCommonDivisors(int a,int b) {
   int gcd_val = gcd(a, b); //get gcd of a and b
   int count = 0;
   for (int i=1; i<=sqrt(gcd_val); i++) {
      if (gcd_val%i==0) { // when'i' is factor of n
         if (gcd_val/i == i) //if two numbers are same
            count += 1;
         else
            count += 2;
      }
   }
   return count;
}
main() {
   int a = 12, b = 24;
   cout << "Total common divisors: " << countCommonDivisors(a, b);
}

Output

The differences array: 6 5 10 1

Updated on: 30-Jul-2019

203 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements