#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;
}
Asked
Active
Viewed 49 times
-3
2 Answers
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
-
Ahh I figured it out. Thank you so much. – Yusuf Jk Nov 05 '15 at 16:57