/*
 * @author Raj Sharma
 * Date 20160306
 */

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Main{
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str;
        long a,b;
 
 
        while((str=br.readLine()) != null){
            a = Long.parseLong(str.substring(0, str.indexOf(" ")));
            b = Long.parseLong(str.substring(str.indexOf(" ")+1, str.length()));
 
            System.out.println(gcd(a, b) + " " + lcm(a,b));
 
        }
    }
 
    static long gcd(long a,long b){
        return b == 0 ? a : gcd(b,a%b);
    }
 
    static long lcm(long a, long b){
        return b*a/gcd(a,b);
    }
} import java.io.BufferedReader; BufferedReader java.io import java.io.IOException; IOException java.io import java.io.InputStreamReader; InputStreamReader java.io public class Main{
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str;
        long a,b;
 
 
        while((str=br.readLine()) != null){
            a = Long.parseLong(str.substring(0, str.indexOf(" ")));
            b = Long.parseLong(str.substring(str.indexOf(" ")+1, str.length()));
 
            System.out.println(gcd(a, b) + " " + lcm(a,b));
 
        }
    }
 
    static long gcd(long a,long b){
        return b == 0 ? a : gcd(b,a%b);
    }
 
    static long lcm(long a, long b){
        return b*a/gcd(a,b);
    }
} Main public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str;
        long a,b;
 
 
        while((str=br.readLine()) != null){
            a = Long.parseLong(str.substring(0, str.indexOf(" ")));
            b = Long.parseLong(str.substring(str.indexOf(" ")+1, str.length()));
 
            System.out.println(gcd(a, b) + " " + lcm(a,b));
 
        }
    } main {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str;
        long a,b;
 
 
        while((str=br.readLine()) != null){
            a = Long.parseLong(str.substring(0, str.indexOf(" ")));
            b = Long.parseLong(str.substring(str.indexOf(" ")+1, str.length()));
 
            System.out.println(gcd(a, b) + " " + lcm(a,b));
 
        }
    } BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); br new BufferedReader(new InputStreamReader(System.in)) String str; str long a a b; b while((str=br.readLine()) != null){
            a = Long.parseLong(str.substring(0, str.indexOf(" ")));
            b = Long.parseLong(str.substring(str.indexOf(" ")+1, str.length()));
 
            System.out.println(gcd(a, b) + " " + lcm(a,b));
 
        } (str=br.readLine()) != null (str=br.readLine()) str br.readLine() br.readLine br null {
            a = Long.parseLong(str.substring(0, str.indexOf(" ")));
            b = Long.parseLong(str.substring(str.indexOf(" ")+1, str.length()));
 
            System.out.println(gcd(a, b) + " " + lcm(a,b));
 
        } a = Long.parseLong(str.substring(0, str.indexOf(" "))) a Long.parseLong(str.substring(0, str.indexOf(" "))) Long.parseLong Long str.substring(0, str.indexOf(" ")) str.substring str 0 str.indexOf(" ") str.indexOf str " " b = Long.parseLong(str.substring(str.indexOf(" ")+1, str.length())) b Long.parseLong(str.substring(str.indexOf(" ")+1, str.length())) Long.parseLong Long str.substring(str.indexOf(" ")+1, str.length()) str.substring str str.indexOf(" ")+1 str.indexOf(" ") str.indexOf str " " 1 str.length() str.length str System.out.println(gcd(a, b) + " " + lcm(a,b)) System.out.println System.out System System.out gcd(a, b) + " " + lcm(a,b) gcd(a, b) + " " + lcm(a,b) gcd(a, b) gcd a b " " lcm(a,b) lcm a b String[] args args static long gcd(long a,long b){
        return b == 0 ? a : gcd(b,a%b);
    } gcd {
        return b == 0 ? a : gcd(b,a%b);
    } return b == 0 ? a : gcd(b,a%b); b == 0 ? a : gcd(b,a%b) b == 0 b 0 a gcd(b,a%b) gcd b a%b a b long a a long b b static long lcm(long a, long b){
        return b*a/gcd(a,b);
    } lcm {
        return b*a/gcd(a,b);
    } return b*a/gcd(a,b); b*a/gcd(a,b) b*a b a gcd(a,b) gcd a b long a a long b b public class Main{
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str;
        long a,b;
 
 
        while((str=br.readLine()) != null){
            a = Long.parseLong(str.substring(0, str.indexOf(" ")));
            b = Long.parseLong(str.substring(str.indexOf(" ")+1, str.length()));
 
            System.out.println(gcd(a, b) + " " + lcm(a,b));
 
        }
    }
 
    static long gcd(long a,long b){
        return b == 0 ? a : gcd(b,a%b);
    }
 
    static long lcm(long a, long b){
        return b*a/gcd(a,b);
    }
} public class Main{
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str;
        long a,b;
 
 
        while((str=br.readLine()) != null){
            a = Long.parseLong(str.substring(0, str.indexOf(" ")));
            b = Long.parseLong(str.substring(str.indexOf(" ")+1, str.length()));
 
            System.out.println(gcd(a, b) + " " + lcm(a,b));
 
        }
    }
 
    static long gcd(long a,long b){
        return b == 0 ? a : gcd(b,a%b);
    }
 
    static long lcm(long a, long b){
        return b*a/gcd(a,b);
    }
} Main
/*
 * @author Raj Sharma
 * Date 20160306
 */

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Main{
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str;
        long a,b;
 
 
        while((str=br.readLine()) != null){
            a = Long.parseLong(str.substring(0, str.indexOf(" ")));
            b = Long.parseLong(str.substring(str.indexOf(" ")+1, str.length()));
 
            System.out.println(gcd(a, b) + " " + lcm(a,b));
 
        }
    }
 
    static long gcd(long a,long b){
        return b == 0 ? a : gcd(b,a%b);
    }
 
    static long lcm(long a, long b){
        return b*a/gcd(a,b);
    }
}