×

LCM of two numbers in C

LCM is a mathematical term which stands for Least Common Multiple. LCM of any two numbers is the smallest positive value(number) which is evenly divisible by the two given numbers.

Consider a and b as two numbers and L denotes the LCM of a and b.

Now, if a=4 and b=6

Then, L will be the smallest number which is divisible by both a and b, i.e., 4 and 6, without leaving any remainder.

LCM of two numbers in C

                                    Figure 1 :  Finding the common multiples of 4 and 6

There are various ways to find LCM of two numbers, some of them are as follows:

  1. Prime factorization
  2. Euclidean algorithm
  3. Listing method ( figure 1)

Algorithm of LCM

The mathematics behind to find the LCM of two numbers can be deduced to an algorithm:

1) Initialize the variables a and b.

2) Store the common multiples of a and b into the variable L.

3) Check whether L is divisible by both a and b.

4) If step 3 is true, display L as the LCM of two numbers (a and b).

5) Else, increase the value of L, and go to step 3.

6) Halt the program.

Finding LCM of two numbers using C programming

Before getting our hands dirty with the coding part, let’s try to deduce the logic behind this mathematical concept.

Consider the same set of examples discussed earlier, where L was the LCM of two numbers a and b.

? L is the smallest number divisible by a and b.

Now, if we think about the logical part (in C code) which will result in our output, the range L will lie between 1 to a*b (product of a and b). Here we are considering the base case to denote the range of L.

i.e.,   L = 1 to L = a*b                                   - (i)

Also, from Step 3 of the algorithm:

      ( L%a == 0 && L%b==0)                     - (ii)

Program 1

int main()
	{
	
	int a,b,L;   // declaring variables


	printf("Enter two numbers");
	
	scanf("%d %d", &a,&b);


	for( L=1; L<= a *b ; L++)              //from statement (i)


	    if( L%a==0 && L%b==0)	         //from statement (ii)
	    break;


	printf("LCM is %d", L);
	
	}

Output:

LCM of two numbers in C

Program 2: LCM of two numbers using GCD

Here, we will follow a basic formula to find the LCM of two numbers a and b.

The formula is as follows:

LCM(a,b) = (a*b) / GCD

*GCD stands for Greatest Common Divisor. The GCD is the largest integer which will divide each of the given numbers evenly.

Let’s understand this using C programming:

int main()
     {
          int num1, num2, lcm, temp, gcd;  //declaring the variables


    	printf("Enter any two integer values \n");
    	scanf("%d %d", &num1, &num2);


 	   int a = num1;
    	   int b = num2;
    
    	while (num2 != 0) 
{
 	temp = num2;                             // storing the output values in temp variable
 	num2 = num1 % num2;
 	num1 = temp;
           }
         gcd = num1;
         lcm = (a * b) / gcd;
         printf("lcm of %d and %d = %d", a, b, lcm);
         return 0;


      }

Output: 

LCM of two numbers in C

Program 3: LCM of two numbers using function

int fun_lcm(int a,int b);                      // function declaration   
 int main()  
{  
    int num1, num2, lcm;
    printf ("Enter any two numbers :\n");  
    scanf ("%d %d", &num1, &num2);  
    lcm = fun_lcm( num1, num2);      // function calling  
    printf ( " \n LCM of %d and %d is %d. ", num1, num2, lcm);  
    return 0;  
}  
  
int fun_lcm ( int num1, int num2)   // function definition   
{  
    static int max = 1;  
    if ( max % num1  == 0 && max % num2 == 0)  
    {  
        return max;  
    }  
    else  
    {  
        max++;  
        fun_lcm( num1, num2);  
        return max;  
    }
  } 

Output:

LCM of two numbers in C

Program 4: LCM of two numbers using recursion

int lcm(int a, int b);


int main()
{
    int num1, num2, LCM;


    /* Input two numbers from user */


    printf("Enter any two numbers to find lcm: ");
    scanf("%d%d", &num1, &num2);
    
    
    if(num1 > num2)
        LCM = lcm(num2, num1);
    else
        LCM = lcm(num1, num2);
        
    printf("LCM of %d and %d using recursive function is = %d", num1, num2, LCM);
    
    return 0;
}


//Recursive function to find lcm of two numbers 'a' and 'b'.


int lcm(int a, int b)
{
    static int multiple = 0;
    
    /* Increments multiple by adding max value to it */


    multiple += b;
    


     // Base case of recursion or recursive function


    if((multiple % a == 0) && (multiple % b == 0))
    {
        return multiple;
    }
    else 
    {
        return lcm(a, b);
    }
}

Output:

LCM of two numbers in C

Related Topics

#include in C

In the C programming language, #include is another way of inferring a standard, or a user defines file into the application or program. The preprocessor of the programming standard generally...

4 minutes read.

How to use floor() function in C

Introduction: The floor() used as a function in the C programming language. This function uses to return the largest or most significant integer value. The integer value is smaller than...

3 minutes read.

Break, continue and goto statement in C

Break statement Break statement is used to break the process of a loop (while, do while and for) and switch case. Syntax: break; Example 1 while(test Expression) { // codes if(condition for break){ break; } // codes } Example 2 For(int it, condition,...

1 minute read.

Difference between rand() and srand() function in C

What is the rand()? The rand() means random function. This function is used in C. It generates random numbers in the range of 0 to the RAND_MAX. Suppose we generate a...

3 minutes read.

Static in C

Static is a keyword that is used in the C programming language. It can be used both as variables and as functions. In other words, it can be declared both...

3 minutes read.

Bit Stuffing Program in C

What is a Bit Stuffing? The process of inserting one or more extra bits (0) into data is known as bit stuffing. To provide signalling information to a recipient, these are...

3 minutes read.

Types Of Structures In C

We can normally store elements of the same datatype with the help of an array in C programming. We can store multiple numbers of elements of a character data type...

3 minutes read.

Find Union and Intersection of Two Arrays in C

Union You can find the union of the two sorted arrays using the join merge method on arr1[] and arr2[]. Use two index variables i and j with initial values i =...

4 minutes read.

Actual and Formal Parameters

Any variable declared within the parenthesis is referred to as the parameters during the function declaration. Parameters tell the function about the argument datatype, their order, and the number of...

5 minutes read.

If Statement in C

Decision Control Statements We frequently desire one set of instructions to be carried out in one circumstance while another set of instructions to be carried out in a completely different circumstance....

3 minutes read.

Use of free() function in C

Introduction The free() function uses in C programming language. The free() function in the C programming language uses to release or deallocate the memory blocks; these blocks are previously allocated by calloc(), malloc() or realloc()...

3 minutes read.

Find median of 1D array using function in C

Introduction: Here, we discuss how we can find the median of a 1D array using a function in C. The median is the value in the middle of the sorted...

3 minutes read.

Reverse a Stack using Recursion in C

In this tutorial we will learn how recursion will be used in this case to reverse a stack. For loops, while loops, do-while loops, and similar constructions are not permitted....

5 minutes read.

Flow Chart of Do while loop in C

This is a flowchart that represents the process of executing the Do while loop in the C programming language Generally, as we know there are three main components of Do While...

3 minutes read.

fork() in C

Introduction To create a new function in the system, there is a need for a system call, i.e. fork system call. It is also known as the child process. These child...

2 minutes read.

Error handling in C

Error handling in C: The C programming standard does not provide direct convenience for handling the errors. However, being a system programming language, it definitely will give access to handling...

4 minutes read.

Pointer arithmetic in C

In the C programming language, a pointer is an address which stores a numeric value. Hence, a developer can perform several arithmetic operations on the same just as one does...

4 minutes read.

Pointer to pointer in C

A pointer to another pointer is another type of multiple indirections and a chain of many pointers. Generally, a pointer consists of the address of the variable. Once a pointer to...

4 minutes read.

C –Structure

C structure is a collection of different types of data that is grouped together. It is used to represent records.Structkeyword is used to create a structure. Each element of a...

1 minute read.

Hook() function in C

Use of hook () function in C Introduction:  The hook () is a function used in the C programming language. The basic concept of the hook() function is that it can remove the function...

3 minutes read.