# Java Program to Find the HCF and LCM of Two Numbers

This article is created to cover some programs in Java that find HCF (GCD) and LCM of two numbers entered by the user at run-time of the program.

If you're not aware, how do the HCF and LCF of two numbers get calculated? Refer to How to Find LCM and How to Find HCF. Now let's move on and create the program in Java.

Note: HCF stands for Highest Common Factor, whereas LCM stands for Least Common Multiple.

## Program to Find the HCF of Two Numbers in Java

The question is, write a Java program to find and print the HCF of two numbers. Both numbers must be received by the user at runtime. The program given below has its answer:

```import java.util.Scanner;

public class CodesCracker
{
public static void main(String[] args)
{
int a, b, gcd;
Scanner s = new Scanner(System.in);

System.out.print("Enter the Two Numbers: ");
a = s.nextInt();
b = s.nextInt();

gcd = a;

while(true)
{
if((a%gcd==0) && (b%gcd==0))
break;
else
gcd--;
}

System.out.println("\nHCF of Given Two Number = " +gcd);
}
}```

The snapshot given below shows the sample run of the above Java program for finding and printing the HCF or GCD of two given numbers with user inputs 18  and 27.

That is,

• Factors of 18 are 1, 2, 3, 6, 9, and 18.
• Factors of 27 are 1, 3, 9, and 27.

Because 9 is the highest common factor between 18 and 27, therefore, HCF is 9.

In the above program, I've assumed one number as the gcd (HCF) of two numbers. And then we used a loop that always evaluates to True until we got a number that divided both the numbers.

The above program can also be created in this way. Since HCF deals with the highest common factor, therefore, we need to initialize the smaller number to gcd initially.

```import java.util.Scanner;

public class CodesCracker
{
public static void main(String[] args)
{
int a, b, hcf;
Scanner s = new Scanner(System.in);

System.out.print("Enter the Two Numbers: ");
a = s.nextInt();
b = s.nextInt();

if(a<b)
hcf = a;
else
hcf = b;

while(true)
{
if((a%hcf==0) && (b%hcf==0))
break;
else
hcf--;
}

System.out.println("\nHCF(" +a+ ", " +b+ ") = " +hcf);
}
}```

Here is its sample run with the same user input as the previous program's sample run:

### Find the HCF of two numbers using the for loop

The above program can be created in a way to use a for loop instead of a while. This program also uses conditional operators to make the program shorter.

```import java.util.Scanner;

public class CodesCracker
{
public static void main(String[] args)
{
int hcf, a, b;
Scanner s = new Scanner(System.in);

System.out.print("Enter the Two Numbers: ");
a = s.nextInt();
b = s.nextInt();

for(hcf=(a<b)?a:b; true; hcf--)
{
if((a%hcf==0) && (b%hcf==0))
break;
}

System.out.println("\nHCF(" +a+ ", " +b+ ") = " +hcf);
}
}```

You'll get the same output as the previous program.

## Program to Find the LCM of Two Numbers in Java

LCM deals with multiples, the least common multiple. This program finds and prints the LCM of two given numbers entered by the user.

```import java.util.Scanner;

public class CodesCracker
{
public static void main(String[] args)
{
int a, b, hcf, lcm;
Scanner s = new Scanner(System.in);

System.out.print("Enter the Two Numbers: ");
a = s.nextInt();
b = s.nextInt();

if(a>b)
lcm = a;
else
lcm = b;

while(true)
{
if((lcm%a==0) && (lcm%b==0))
break;
else
lcm++;
}

System.out.println("\nLCM(" +a+ ", " +b+ ") = " +lcm);
}
}```

Here is its sample run, with the same user input as the previous program:

That is,

• Multiples of 18 are 18, 36, 54, ...
• Multiples of 27 are 27, 54, ...

54 is the least common multiple of 18 and 27. Therefore, LCM is 54.

## Find the HCF and LCM of two numbers in Java

This program is basically the combined version, as it prints both LCM and HCF (GCD) of any two given numbers.

```import java.util.Scanner;

public class CodesCracker
{
public static void main(String[] args)
{
int x;
Scanner s = new Scanner(System.in);

System.out.print("Enter the Two Numbers: ");
int a = s.nextInt();
int b = s.nextInt();

int numOne = a;
int numTwo = b;

while(b!=0)
{
x = b;
b = a%b;
a = x;
}

int hcf = a;
int lcm = (numOne*numTwo)/hcf;

System.out.println("\nHCF(" +numOne+ ", " +numTwo+ ") = " +hcf);
System.out.println("LCM(" +numOne+ ", " +numTwo+ ") = " +lcm);
}
}```

The sample run with user inputs 2 and 5 is shown in the snapshot given below:

#### Same Program in Other Languages

Java Online Test

« Previous Program Next Program »

Liked this post? Share it!