#include <stdio.h>

// 欧几里得算法计算最大公约数
int gcd(int a, int b) {
    while (b != 0) {
        int temp = b;
        b = a % b;
        a = temp;
    }
    return a;
}

// 计算最小公倍数
int lcm(int a, int b, int gcd_value) {
    return (a / gcd_value) * b;
}

int main() {
    int a, b;

    // 从标准输入读取两个整数
    scanf("%d %d", &a, &b);

    // 计算最大公约数
    int gcd_value = gcd(a, b);

    // 计算最小公倍数
    int lcm_value = lcm(a, b, gcd_value);

    // 输出结果
    printf("%d %d\n", gcd_value, lcm_value);

    return 0;
}
