-3
#include <stdio.h>
int gcd(int a, int b);

int lcm(int x ,int y);

int main()

{

    int num1, num2, k, hcf,max,n;
    scanf("%d",n);
    for (k=0;k<n;k++)
    {
    scanf("%d %d", &num1, &num2);
    hcf=gcd(num1,num2);
    max=lcm(num1,num2);
    printf("%d %d\n", hcf,max);
}

 return 0;

}

int gcd(int a, int b)

{

    int i,f;
    for(i=1;i<=a || i<=b; i++)
    if (a%i==0 && b%i==0)
    f=i;
    return f;
}

int lcm(int x ,int y)

{

int m;

m=(x>y) ? x : y; 

 while(1)                       
  {

      if(m%x==0 && m%y==0)
      {
          return m;
          break;          
      }
      ++m;
  } 

return x,y;

}
BLUEPIXY
  • 39,699
  • 7
  • 33
  • 70
Yusuf Jk
  • 1
  • 1
  • 4

2 Answers2

2
scanf("%d",n);
           ^ & missing 

You need here address of n, as %d expects address of int. Add & there -

scanf("%d",&n);

And this -

  return x,y; 

I don't know what you understand (or expect) from it but will only return y .

ameyCU
  • 16,489
  • 2
  • 26
  • 41
0

Question is already answered and yes,

scanf( "%d" , &n );

however below is an alternative specific to above program.

int main() {

        int num1, num2, k, hcf,max,n;
        //scanf("%d",n);
        scanf("%d",&n);
        for (k=0;k<n;k++) {
                scanf("%d %d", &num1, &num2);
                hcf=gcd(num1,num2);
                //max=lcm(num1,num2);
                // LCM = ( n1, n2 )/ GCD will work in your case    
                max = ( num1 * num2 ) / hcf ;   
                printf("%d %d\n", hcf,max);
        }
        return 0;
}

int gcd(int a, int b) {
        int i,f;
        for(i=1;i<=a || i<=b; i++) {
                if (a%i==0 && b%i==0) {
                        f=i;
                }
        }
        return f;
}
asio_guy
  • 3,667
  • 2
  • 19
  • 35