In mathematics, the Euclidean algorithm, or Euclid's algorithm, is an efficient method for computing the greatest common divisor (GCD) of two integers (numbers) is the largest number that divides them both without a remainder.

The algorithm is based on the below facts:

If we divide the larger number by a smaller number and take the remainder and now divide that smaller number by this remainder. Repeat until the remainder is equal to 0.

For example, if we want to find the H.C.F. of 60 and 36, we divide 60 by 36. The remainder is 24. Now, we divide 36 by 24 and the remainder is 12. Again, we divide the 24 by 12 and the remainder is 0. Hence, 12 is the required H.C.F.

Here is the code of the program to find the HCF(Highest Common Factor) or GCD (Greatest Common Divisor) using the Euclidean algorithm and recursion.

Java Program to Find HCF or GCD of Two Numbers Using the Euclidean Algorithm and Recursion

// Java Program to Find GCD of Two Numbers Using the Euclidean Algorithm
import java.util.Scanner;
public class JavaPrograms {
//Custom Function
public static int getGCD(int firstNum, int secondNum, int firstCoff, int secondCoff){
if(firstNum == 0){
firstCoff = 0;
secondCoff = 0;
return secondNum;
}
//To store results of recursive function call
int coff1 = 1, coff2 = 1;
//Recursive call
int gcd = getGCD(secondNum % firstNum, firstNum, coff1, coff2);
//Updating the coff variables for recursive call
firstCoff = coff2 - (secondNum / firstNum) * coff1;
secondCoff = coff1;
//Return the GCD
return gcd;
}
public static void main(String[] args) {
// scanner class declaration
Scanner sc = new Scanner(System.in);
// input from the user
System.out.print("Enter the first number : ");
int num1 = sc.nextInt();
// input from the user
System.out.print("Enter the second number : ");
int num2 = sc.nextInt();
int x = 1, y = 1;
/*************
* Declaring and Initializing an integer type variable to
* capture the returned value of the custom function
**************/
int GCD = getGCD(num1, num2, x, y);
System.out.print("HCF of " + num1 + " and " + num2 + " is " + GCD);
// closing scanner class(not compulsory, but good programming practice)
sc.close();
}
}

## Comments