输入
第一行输入一个整数n(0<n<=10000),表示有n组测试数据;
随后的n行输入两个整数i,j(0<i,j<=32767)。
输出
输出每组测试数据的最大公约数和最小公倍数
随后的n行输入两个整数i,j(0<i,j<=32767)。
我的代码:
#include <stdio.h>
void swap(int *j,int *k)
{
int n;
if(*j>=*k) return;
else
{
n=*j;
*j=*k;
*k=n;
}
}
void cal(int j,int k)
{
int s=j*k;
int temp;
swap(&j,&k);
while(k!=0)
{
temp=j%k;
j=k;
k=temp;
}
printf("%d %d\n",j,s/j);
}
int main()
{
int o,j,k;
scanf("%d",&o);
while(o--)
{
scanf("%d %d",&j,&k);
if(j==k) printf("%d %d\n",j,k);
else
{
cal(j,k);
}
}
return 0;
}
最优代码:
01.#include<stdio.h>
02.
int
main()
03.
{
04.
unsigned
int
u,v,r,s,i,d;
05.
scanf
(
"%u"
,&s);
06.
for
(i=1;i<=s;i++)
07.
{
08.
scanf
(
"%u%u"
,&u,&v);
09.
d=u*v;
10.
while
(v!=0)
11.
{
12.
r=u%v;
13.
u=v;
14.
v=r;
15.
}
16.
printf
(
"%u %u\n"
,u,d/u);
17.
}
18.
return
0;
19.
}