#include <stdio.h> 
// Function to calculate GCD using pointers
int calculateGCD(int *a, int *b){
    int x = *a, y = *b;
    while (y != 0){
        int temp = y;
        y = x % y;
        x = temp;
    }
return x;
}
// Function to calculate LCM using pointers 
int calculateLCM(int *a, int *b){
    int gcd = calculateGCD(a, b);
    return (*a * *b) / gcd;
}
int main(){
    int x, y;
    // Input two integers
    scanf("%d%d" , &x, &y);
    
    // Check for invalid input
    if (x <= 0 || y <= 0){
        printf("Invalid input");
    }
}else {
    int gcd = calculateGCD(&x, &y);
    int lcm = calculateLCM(&x, &Y);
    printf("%d %d" , gcd, lcm);
}
return 0;
}