# C Program to Find LCM and HCF of Two Numbers

« Previous Program Next Program »

In this tutorial, you will learn and get code about finding the LCM and HCF of any two given numbers by user (at run-time). But before going through the program, if you are not aware about how to find LCM and HCF, then I recommend you to go through following two articles:

I'm sure, within a minute, you will get complete understanding about both the topic. Let's move on and implement it in a C program.

## Find LCM of Two Numbers in C

Let's first create a program to find out the LCM of two numbers:

```#include<stdio.h>
#include<conio.h>
int main()
{
int num1, num2, mp;
printf("Enter two Numbers: ");
scanf("%d %d", &num1, &num2);
if(num1>num2)
mp=num1;
else
mp=num2;
while(1)
{
if((mp%num1==0) && (mp%num2==0))
break;
else
mp++;
}
printf("\nLCM(%d,%d) = %d", num1, num2, mp);
getch();
return 0;
}```

This program was build and run under Code::Blocks IDE. Here is its sample run:

Now supply any two number as input say 10 and 12. Then press `ENTER` key to see the following output:

Because LCM is the number that must be divisible by both the number (with leaving remainder 0). For example, if 10 and 12 are the two numbers. To find its LCM, we have to first check which one is greater. Initialize the greater number to a variable say mp. Now using the statement:

```if((mp%num1==0) && (mp%num2==0))
break;```

We have checked whether value in mp is divisible by both the number or not. If it is, then exit the while loop using break statement. Otherwise, increment its value and continue for next check. On exiting the loop, we have a value stored inside mp that will be equal to the LCM of two given numbers. Putting 1 as the condition in while loop runs infinite time, until break statement executed.

There are a lot of approaches you can go for, to calculate LCM or HCF. It is up to you.

### Find LCM in C without using if-else

Now let's create the same purpose program, without using if-else as given below:

```#include<stdio.h>
#include<conio.h>
int main()
{
int num1, num2, lcm, a, b, temp;
printf("Enter two Numbers: ");
scanf("%d %d", &num1, &num2);
a=num1;
b=num2;
while(b!=0)
{
temp = b;
b = a%b;
a = temp;
}
lcm = (num1*num2)/a;
printf("\nLCM(%d,%d) = %d", num1, num2, lcm);
getch();
return 0;
}```

This will produce the same output as of previous one.

## Find HCF of Two Numbers in C

Now let's create a program that finds HCF of two numbers entered by user:

```#include<stdio.h>
#include<conio.h>
int main()
{
int num1, num2, mp;
printf("Enter two Numbers: ");
scanf("%d %d", &num1, &num2);
if(num1>num2)
mp=num1;
else
mp=num2;
while(1)
{
if((num1%mp==0) && (num2%mp==0))
break;
else
mp--;
}
printf("\nHCF(%d,%d) = %d", num1, num2, mp);
getch();
return 0;
}```

Here is its sample run:

As you can see from the above program, we have just reverse the condition of if block from:

`(mp%num1==0) && (mp%num2==0)`

to

`(num1%mp==0) && (num2%mp==0)`

And the statement from

`mp++;`

to

`mp--;`

If you have visited both the articles (How to Find LCM and HCF) as mentioned at early of the program, then you gets complete understanding about the reversing of above two, that is, the condition and the statement.

Because in HCF, we have to find highest common factor of both the number, therefore we have initialized the greater number to mp and checks whether it is divisible by both the number or not. If it is, then break out from the loop, otherwise decrement its value and continue to check for next value. For example, if the two given numbers are 18 and 27, therefore program flow goes like:

• The highest number, 27 gets initialized to mp
• The number 1 as condition of while loop always evaluates to be true
• So program flow continue running, until break keyword occurs
• Inside the loop, using if block, checks whether both the number, 18 and 27 is divisible by 27 or not
• Because it is not divisible by the first number 18, therefore else block's statement gets executed and the value of mp gets decremented
• When the value of mp becomes 9
• Then in if block's condition, as both the number 18 and 27 is completely divisible by 9
• Therefore program flow goes inside the if block's statement and break; gets executed
• This exits from the loop
• And Finally print the value of mp as HCF result of two given numbers. That's it

### Find HCF in C using while Loop

Now let's create another program to find out HCF of two numbers without using if-else block

```#include<stdio.h>
#include<conio.h>
int main()
{
int num1, num2, a, b, temp, hcf;
printf("Enter two Numbers: ");
scanf("%d %d", &num1, &num2);
a=num1;
b=num2;
while(b!=0)
{
temp = b;
b = a%b;
a = temp;
}
hcf = a;
printf("\nHCF(%d,%d) = %d", num1, num2, hcf);
getch();
return 0;
}```

#### Same Program in Other Languages

C Online Test

« Previous Program Next Program »