'LCM And GCD in C using recursion or normal method

While trying to do the GCD and LCM program from programming simplified...I am facing problems with the results. I did everything correct(according to me) and even checked word by word but the problem still persists...I am pasting the code of normal method only.

#include <stdio.h>

int main()
{
    int a, b, x, y, t, gcd, lcm;
  
    printf("Enter first number :");
    scanf("%d", &a);
    printf("Enter first number :");
    scanf("%d", &b);
  
    a = x;
    b = y;
  
    while (b != 0)
    {
        t = b;
        b = a % b;
        a = t;
    }
  
    gcd = a;
    lcm = (x * y)/gcd;
  
    printf("Greatest common divisior of %d and %d = %d\n", x, y, gcd);
    printf("Lowest common divisior of %d and %d = %d\n", x, y, lcm);
  
    getch();    
}
c


Solution 1:[1]

Better try this. This is simpler to run.

#include<stdio.h>
int GCD(int,int); 
void main(){
int p,q;
printf("Enter the two numbers: ");
scanf("%d %d",&p,&q);
printf("\nThe GCD is %d",GCD(p,q));
printf("\nThe LCM is %d",(p*q)/(GCD(p,q)));
}
int GCD(int x,int y){
if(x<y)
GCD(y,x);
if(x%y==0)
return y;
else{
GCD(y,x%y);
 }
}

Solution 2:[2]

Try it

#include<stdio.h>
int main(){
int a,b,lcm,gcd;
printf("enter two value:\n");
scanf("%d%d",&a,&b);
gcd=GCD(a,b);
lcm=LCM(a,b);
printf("LCM=%d and GCD=%d",lcm,gcd);
return 0;
}
int GCD(int a, int b){

while(a!=b){
    if(a>b){
        a=a-b;
    }else{
    b=b-a;
    }
    }
  return a;
}
int LCM(int a, int b){
return (a*b)/GCD(a,b);
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Moriarty
Solution 2