import java.util.Scanner;
import java.util.Arrays;

class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		while( scan.hasNextInt() ) {
			Integer[] ary = new Integer[2];
			ary[0] = scan.nextInt();
			ary[1] = scan.nextInt();
			
			Arrays.sort(ary);
			
			int divisor = 0, temp = 0;
			long multiple = 0;
			
			if(ary[0] != 0) {
				int m = ary[1];
				int n = ary[0];
				
				while(true) {
					if(m % n != 0) {
						temp = n;
						n = m % n;
						m = temp;
					}
					
					else if(m % n == 0){
						divisor = n;
						break;
					}
				}
			}
			
			else {
				divisor = ary[1];
			}
			
			multiple = (ary[0] * (long)ary[1]) / divisor;
			
			
			System.out.println(divisor + " " + multiple);
		}
	}
}
/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