
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Main p = new Main();
	}

	public Main() {
		Scanner sc = new Scanner(System.in);
		String str = "";
	
		while(sc.hasNextLine()){
			str = sc.nextLine();
			String[] numStrs = str.split(" ");
			int a = Integer.parseInt(numStrs[0]);
			int b = Integer.parseInt(numStrs[1]);
			if(b>a){
				int w = a;
				a = b;
				b = w;
			}
			solve(a, b);
		}
	}

	public void solve(int a, int b) {
		int gcdRes = gcd(a, b);
		int lcmRes = lcm(a, b, gcdRes);
		
		System.out.println(gcdRes + " " + lcmRes);
	}
	
	private int gcd(int a, int b){
		if(a%b == 0)
			return b;
		
		return gcd(b, a%b);
	}
	
	private int lcm(int a, int b, int gcdNum){
		return (int)(((long)a*b) / gcdNum);
	}
	
	/** バグがある? **/
	private int lcm(int a, int b){
		if(a<=3){
			if(a==b)
				return a;
			else
				return a*b;
		}else if(a%b==0){
			return a;
		}

		int r = b;
		for(int i=2;i*i<=a;i++){
			int aFact = 1;
			while(a%i==0){
				a = a/i;
				aFact*=i;
			}
			
			int bFact = 1;
			while(b%i==0){
				b = b/i;
				bFact*=i;
			}
			
			if(aFact>bFact)
				r *= (aFact/bFact);
		}
		return r*a;
		
	}
	

}
/tmp/hf-datasets-cache/medium/datasets/42704881117311-config-parquet-and-info-qiankunmu-Project_CodeNet-896c9d36/hub/datasets--qiankunmu--Project_CodeNet_Python800_and_Java250/snapshots/c899fde44a77ba1cc14973ed3de064e4ff3aadc7/Project_CodeNet_Java250.tar.gz