VOOZH about

URL: https://www.geeksforgeeks.org/dsa/euclids-algorithm-when-and-operations-are-costly/

⇱ Euclid's Algorithm when % and / operations are costly - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

Euclid's Algorithm when % and / operations are costly

Last Updated : 23 Jul, 2025

Euclid's algorithm is used to find GCD of two numbers. 
There are mainly two versions of algorithm. 
Version 1 (Using subtraction) 
 

Time Complexity: O(max(a, b))

Auxiliary Space: O(1)

Version 2 (Using modulo operator) 
 

Time Complexity: O(log(max(a, b)))

Auxiliary Space: O(1)

Which of the above two is more efficient? 
Version 1 can take linear time to find the GCD, consider the situation when one of the given numbers is much bigger than the other. Version 2 is obviously more efficient as there are less recursive calls and takes logarithmic time.
Consider a situation where modulo operator is not allowed, can we optimize version 1 to work faster?
Below are some important observations. The idea is to use bitwise operators. We can find x/2 using x>>1. We can check whether x is odd or even using x&1.
gcd(a, b) = 2*gcd(a/2, b/2) if both a and b are even. 
gcd(a, b) = gcd(a/2, b) if a is even and b is odd. 
gcd(a, b) = gcd(a, b/2) if a is odd and b is even.
Below is C++ implementation.
 

Time Complexity: O(log(max(a, b)))

Auxiliary Space: O(1)

This article is compiled by Shivam Agrawal.
 

Comment
Article Tags: