codescracker
c

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:

c program find hcf lcm

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

c program lcm of two numbers

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:

c program hcf of two numbers

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:

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;
}

More Programs on LCM & HCF

Same Program in Other Languages

C Online Test


« Previous Program Next Program »



© Copyright 2021. All Rights Reserved.

CodesCracker