#include <stdio.h>
// Function to calculate GCD using Euclidean algorithm
int calculateGCD(int *a, int *b){
    int temp;
    while (*b != 0){
        temp = *b;
        *b = *a % *b;
        *a = temp;
    }
    return *a;
}
// Function to calculate LCM
int calculateLCM(int x, int y, intgcd){
    return (x * y) / gcd;
}
int main(){
    int x, y;
    // Input two integers
    if (scanf("%d" , &x) != 1 || scanf("%d" , &y) != 1){
        printf("Invalid input\n");
        return 1;
    }
// check if numbers are positive
if (x <= 0 || y <= 0){
    printf("invalid input\n");
    return 1;
}
int gcd = calculateGCD(&x, &y);
int lcm = calculateLCM(x, y, gcd);
//print GCD and LCM on the same line
printf("%d %d\n", gcd, lcm);
return 0;
}