#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;
}
2 に答える
2
scanf("%d",n);
^ & missing
int のアドレスが必要なためn
、ここでは のアドレスが必要です。%d
そこに追加&
-
scanf("%d",&n);
この -
return x,y;
あなたがそれから何を理解しているか(または期待しているか)はわかりませんが、 のみが返されy
ます。
于 2015-09-19T07:55:06.970 に答える
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;
}
于 2015-09-19T08:30:14.243 に答える