#include<stdio.h>
int gcd(int a,int b)
{
return !b?a:gcd(b,a%b);
}
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
int i,j,t;
scanf("%d%d",&i,&j);
t=gcd(i,j);
printf("%d %d\n",t,i*j/t);
}
return 0;
}
最小公倍数=两数之积除以最大公约数