#include <stdio.h>
#define MAX(x,y) ((x)>=(y)?(x):(y))
#define MIN(x,y) ((x)<(y)?(x):(y))
#if 0
int gcd(int a,int b)
{
printf("a %d b %d\n",a,b);
while(a!=b)
{
if(a>b)
{
a = a-b;
}
else if(a<b)
{
b = b-a;
}
// printf("a %d b %d\n",a,b);
}
return b;
}
#else
int gcd(int m,int n)
{
int a = MAX(m,n);
int b = MIN(m,n);
int t;
do
{
t = a%b;
a = b;
b = t;
}while(t!=0);
return a;
}
#endif
int main () {
//JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。
int a;
int b;
scanf("%d%d",&a,&b);
int c = gcd(a,b);
int d = a*b/c;
printf("gcd %d %d\n",c,d);
return 0;
}