#include <iostream>
#include <algorithm>
using namespace std;

long long GCD (long long a, long long b)
{
    /*long long t;
    if (a>b) swap(a,b);
    while (1)
    {
        t=b%a;
        if (t==0) break;
        b=a;
        a=t;
    }
    return a;*/
    if (a%b==0) return b;
    else if (b%a==0) return a;
    else if (a>b) return GCD(a%b,b);
    else return GCD(b%a,a);
}

int main()
{
    long long a,b,gcd[50],lcm[50],c=0;
    while (cin>>a>>b)
    {
        gcd[c]=GCD(a,b);
        lcm[c]=a*b/gcd[c];
        c++;
    }
    for (int i=0; i<c; i++) cout<<gcd[i]<<" "<<lcm[i]<<'\n';
    return 0;
}


