#include <iostream>
using namespace std;
int gcd(int x,int y)//最大公约数
{
return y==0?x:gcd(y,x%y);
}
int lcm(int x,int y)//最小公倍数
{
return x/gcd(x,y)*y;
}
int main()
{
int x,y;
while(cin>>x>>y)
cout<<gcd(x,y)<<" "<<lcm(x,y)<<endl;
return 0;
}
using namespace std;
int gcd(int x,int y)//最大公约数
{
return y==0?x:gcd(y,x%y);
}
int lcm(int x,int y)//最小公倍数
{
return x/gcd(x,y)*y;
}
int main()
{
int x,y;
while(cin>>x>>y)
cout<<gcd(x,y)<<" "<<lcm(x,y)<<endl;
return 0;
}