#include <iostream>
using namespace std;
int gab(int a,int b)
{
return a%b==0?b:gab(b,a%b); //欧几里德算法
}
int main()
{
int x;
int y;
cin>>x>>y;
int z;
z=gab(x,y); //z 为最小公倍数
cout<<z<<"\n"<<x*y/z;//两数的积除以最大公约数=最小公倍数
return 0;
}
using namespace std;
int gab(int a,int b)
{
return a%b==0?b:gab(b,a%b); //欧几里德算法
}
int main()
{
int x;
int y;
cin>>x>>y;
int z;
z=gab(x,y); //z 为最小公倍数
cout<<z<<"\n"<<x*y/z;//两数的积除以最大公约数=最小公倍数
return 0;
}