Qn: Write a C program to find HCF (or) GCD and LCM of two numbers
-By Admin, Last Update On 28th May,2019 01:59 pm

HCF(Highest Common Factor) or GCD -Greatest Common Divisor

கொடுக்கப்பட்டுள்ள அனைத்து number-ஐயும் பொதுவாக divide செய்யகூடிய எண்களில் பெரிய எண் GCD என்று அழைக்கபடுகிறது. உதாரணதிற்கு 10,20 இந்த இரண்டு எண்களை எடுத்துகொண்டால் 2,5,10 இந்த 3 எண்களும், 10 மற்றும் 20 common-ஆக divide செய்கின்றது. இந்த மூன்றில் பெரிய எண் 10. இதுவே 10,20-இன் GCD ஆகும்.

Euclid's algorithm-ம் படி, number1 மற்றும் number2 எடுத்துகொள்வோம். இதில் number2=0 ஆக இருந்தால் number1-தான் இரண்டு number-க்கும் GCD. ஒருவேலை number2 !=0 ஆக இருந்தால் number2-ன் value-ஐ number1-க்கு மாற்றிவிட்டு அதாவது number1=number2. இப்பொழுது number2-ன் value-ஐ number2= number1%number2; என்று மாற்றி விடவேண்டும். இபொழுது number2-ன் value 0-ஆக இருக்கின்றதா என்று மீண்டும் சரிபார்க்க வேண்டும். இருந்தால் number1-ன் value GCD-ஆக கருதப்படும். இல்லையனில் மீண்டும் மீண்டும் number1 மற்றும் number2-ன் value-ஐ மாற்றிக்கொண்டே இருக்கவேண்டும் number2-ன் value 0 ஆகும் வரை.

இதற்க்கு getGCD(number2, number1 % number2) என்ற recursive function-ஐ பணடுதுக்கின்றோம்.

Program to find GCD

#include<stdio.h>
#include<conio.h>
int main(){
 int number1,number2,gcd;
  printf("\nEnter number1: ");
  scanf("%d",&number1);
  printf("\nEnter number2: ");
  scanf("%d",&number2);
  // function call
  gcd=getGCD(number1, number2);
  printf("GCD is : %d", gcd);
  return 0;
}

int getGCD(int number1, int number2) {
    if (number2 == 0) {
        return number1;
    }
    // recursive function call
    return getGCD(number2, number1 % number2);
}
Output:
Enter number1: 10
Enter number2: 20
GCD is : 10

//2nd time checked output
Enter number1: 3
Enter number2: 11
GCD is : 1

Program to find GCD and LCM

LCM:

கொடுக்கப்பட்டுள்ள இரண்டு number-ஐ பெருக்கி(multiply) GCD-ஆல் divide செய்த பின் கிடைக்கும் value LCM என்று அழைக்கபடுகிறது

#include<stdio.h>
#include<conio.h>
int main(){
  int number1,number2,temp,a,b,gcd,lcm;
  printf("Enter number1: ");
  scanf("%d",&number1);
  printf("Enter number2: ");
  scanf("%d",&number2);
  a = number1;
  b = number2;
  while (b != 0){
    temp = b;
    b = a % b;
    a = temp;
  }
  gcd = a;
  lcm = (number1*number2)/gcd;
  pfintf("\nGCD is: %d", gcd);
  pfintf("\nLCM is: %d",lcm);         
return 0;
}
Output:
Enter number1: 10
Enter number2: 20
GCD is : 10
LCM is : 20

//checked another output
Enter number1: 3
Enter number2: 11
GCD is : 1
LCM is : 33

Pgcomments

Comments