๐Ÿ“”
Algorithms Analysis & Design
  • Algorithm Analysis & Design
  • ๐ŸšขSearching and Sorting
    • Introduction-Search
    • Linear Search
    • Binary Search
    • Interpolation Search
    • Introduction-Sorting
    • Bubble Sort
    • Selection Sort
    • Counting Sort
  • ๐Ÿ’ธGreedy Method
    • Introduction
    • Activity Selection
    • Fractional Knapsack Problem
    • Graph Colouring
  • ๐Ÿš Backtracking
    • Introduction
    • Hamiltonian Path/Cycle Problem
    • N Queen Problem
    • Rat in a Maze
    • Knight's Tour Problem
  • โš”๏ธDivide and Conquer
    • Introduction
    • Strassen's Matrix multiplication
    • Karatsuba algorithm
    • Tower of Hanoi
    • Closest Pair
  • ๐Ÿ’ฃDynamic Programming
    • Introduction
    • Longest Common Subsequence
    • Floyd-Warshall Algorithm
    • 0-1 Knapsack problem
    • Dice Throw
  • ๐Ÿ“ˆGraph
    • Introduction
    • DFS
    • Dictionary Game
    • BFS
    • Flood Fill Algorithm
    • Minesweeper Lite
  • ๐Ÿ”ขNumber Theory
    • Introduction
    • GCD
    • Factorial
    • IsPrime | School Method
    • IsPrime | Fermat's Little Theorem
    • IsPrime | Miller-Rabin Method
  • ๐ŸŒฎReferences
Powered by GitBook
On this page

Was this helpful?

  1. Number Theory

GCD

GCD (Greatest Common Divisor) or HCF (Highest Common Factor) of two numbers is the largest number that divides both of them.

Let us find the GCD of 36 and 60.

We know,

  • 36 = 2 * 2 * 3 * 3

  • 60 = 2 * 2 * 3 * 5

When we collect all the commen factors, ie 2 * 3 * 3, we get the GCD as 12.

For example GCD of 20 and 28 is 4 and GCD of 98 and 56 is 14.

For solution suppose a=98 & b=56

a>b so put a= a-b and b is remain same so a=98-56=42 & b= 56 . Now b>a so b=b-a and a is same

b= 56-42 = 14 & a= 42 . 42 is 3 times of 14 so HCF is 14 . likewise a=36 & b=60 ,here b>a so b = 24 & a= 36 now a>b so a= 12 & b= 24 . 12 is HCF of 36 and 60 . This concept is always satisfying.

A simple solution is to find all prime factors of both numbers, then find intersection of all factors present in both numbers.

Finally, return the product of elements in the intersection.

An efficient solution is to use Euclidean algorithm which is the main algorithm used for this purpose. The idea is, GCD of two numbers doesnโ€™t change if smaller number is subtracted from a bigger number.

// Recursive function to return gcd of a and b
int gcd(int a, int b){    
// Everything divides 0    
if (a == 0)       
return b;    
if (b == 0)       
return a;      
// base case    
if (a == b)        
return a;      
// a is greater    
if (a > b)        
return gcd(a-b, b);    
return gcd(a, b-a);}  
// Driver program to test above function
int main(){    
int a = 98, b = 56;    
cout<<"GCD of "<<a<<" and "<<b<<" is "<<gcd(a, b);    
return 0;}

Output:

GCD of 98 and 56 is 14
PreviousIntroductionNextFactorial

Last updated 3 years ago

Was this helpful?

๐Ÿ”ข