#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;
}
-3
A
ответ
2
scanf("%d",n);
^& missing
Вы должны здесь адрес n
как %d
ожидает адрес междунар. Добавить &
там -
scanf("%d",&n);
И это -
return x,y;
Я не знаю, что вы понимаете (или ожидать) от него, но будет возвращать только y
.
0
Вопрос уже ответили и да,
scanf("%d" , &n);
однако ниже, является альтернативой специфичны для указанной программы.
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;
}
Ahh Я понял это. Огромное спасибо. –