import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;


class Main{
	public static void main(String[] args)throws IOException{
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		String name=br.readLine();
		int num;
		int compare;

		int[] a=new int[2];
		int i=0;

		int tmp;
		int x,y;
		while(true){

			try{

				StringTokenizer st=new StringTokenizer(name," ");
			     while (st.hasMoreTokens()) {
			    	 a[i]=Integer.parseInt(st.nextToken());
			    	 i++;
			     }i=0;

			     if (a[0] > a[1]) {
			            x = a[0];
			            y = a[1];
			        } else {
			            x = a[1];
			            y = a[0];
			        }

			     while((tmp=x%y)!=0){
			    	 tmp=x%y;
			    	 x = y;
			         y = tmp;
			     }

			     System.out.println(y+" "+a[0]/y*a[1]);
				a[0]=0;
				a[1]=0;
				x=0;
				y=0;
				tmp=0;
				name=br.readLine();
			}

			catch(Exception e){
				System.exit(0);
			}
		}
	}
} import java.io.BufferedReader; BufferedReader java.io import java.io.IOException; IOException java.io import java.io.InputStreamReader; InputStreamReader java.io import java.util.StringTokenizer; StringTokenizer java.util class Main{
	public static void main(String[] args)throws IOException{
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		String name=br.readLine();
		int num;
		int compare;

		int[] a=new int[2];
		int i=0;

		int tmp;
		int x,y;
		while(true){

			try{

				StringTokenizer st=new StringTokenizer(name," ");
			     while (st.hasMoreTokens()) {
			    	 a[i]=Integer.parseInt(st.nextToken());
			    	 i++;
			     }i=0;

			     if (a[0] > a[1]) {
			            x = a[0];
			            y = a[1];
			        } else {
			            x = a[1];
			            y = a[0];
			        }

			     while((tmp=x%y)!=0){
			    	 tmp=x%y;
			    	 x = y;
			         y = tmp;
			     }

			     System.out.println(y+" "+a[0]/y*a[1]);
				a[0]=0;
				a[1]=0;
				x=0;
				y=0;
				tmp=0;
				name=br.readLine();
			}

			catch(Exception e){
				System.exit(0);
			}
		}
	}
} Main public static void main(String[] args)throws IOException{
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		String name=br.readLine();
		int num;
		int compare;

		int[] a=new int[2];
		int i=0;

		int tmp;
		int x,y;
		while(true){

			try{

				StringTokenizer st=new StringTokenizer(name," ");
			     while (st.hasMoreTokens()) {
			    	 a[i]=Integer.parseInt(st.nextToken());
			    	 i++;
			     }i=0;

			     if (a[0] > a[1]) {
			            x = a[0];
			            y = a[1];
			        } else {
			            x = a[1];
			            y = a[0];
			        }

			     while((tmp=x%y)!=0){
			    	 tmp=x%y;
			    	 x = y;
			         y = tmp;
			     }

			     System.out.println(y+" "+a[0]/y*a[1]);
				a[0]=0;
				a[1]=0;
				x=0;
				y=0;
				tmp=0;
				name=br.readLine();
			}

			catch(Exception e){
				System.exit(0);
			}
		}
	} main {
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		String name=br.readLine();
		int num;
		int compare;

		int[] a=new int[2];
		int i=0;

		int tmp;
		int x,y;
		while(true){

			try{

				StringTokenizer st=new StringTokenizer(name," ");
			     while (st.hasMoreTokens()) {
			    	 a[i]=Integer.parseInt(st.nextToken());
			    	 i++;
			     }i=0;

			     if (a[0] > a[1]) {
			            x = a[0];
			            y = a[1];
			        } else {
			            x = a[1];
			            y = a[0];
			        }

			     while((tmp=x%y)!=0){
			    	 tmp=x%y;
			    	 x = y;
			         y = tmp;
			     }

			     System.out.println(y+" "+a[0]/y*a[1]);
				a[0]=0;
				a[1]=0;
				x=0;
				y=0;
				tmp=0;
				name=br.readLine();
			}

			catch(Exception e){
				System.exit(0);
			}
		}
	} BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); br new BufferedReader(new InputStreamReader(System.in)) String name=br.readLine(); name br.readLine() br.readLine br int num; num int compare; compare int[] a=new int[2]; a new int[2] 2 int i=0; i 0 int tmp; tmp int x x y; y while(true){

			try{

				StringTokenizer st=new StringTokenizer(name," ");
			     while (st.hasMoreTokens()) {
			    	 a[i]=Integer.parseInt(st.nextToken());
			    	 i++;
			     }i=0;

			     if (a[0] > a[1]) {
			            x = a[0];
			            y = a[1];
			        } else {
			            x = a[1];
			            y = a[0];
			        }

			     while((tmp=x%y)!=0){
			    	 tmp=x%y;
			    	 x = y;
			         y = tmp;
			     }

			     System.out.println(y+" "+a[0]/y*a[1]);
				a[0]=0;
				a[1]=0;
				x=0;
				y=0;
				tmp=0;
				name=br.readLine();
			}

			catch(Exception e){
				System.exit(0);
			}
		} true {

			try{

				StringTokenizer st=new StringTokenizer(name," ");
			     while (st.hasMoreTokens()) {
			    	 a[i]=Integer.parseInt(st.nextToken());
			    	 i++;
			     }i=0;

			     if (a[0] > a[1]) {
			            x = a[0];
			            y = a[1];
			        } else {
			            x = a[1];
			            y = a[0];
			        }

			     while((tmp=x%y)!=0){
			    	 tmp=x%y;
			    	 x = y;
			         y = tmp;
			     }

			     System.out.println(y+" "+a[0]/y*a[1]);
				a[0]=0;
				a[1]=0;
				x=0;
				y=0;
				tmp=0;
				name=br.readLine();
			}

			catch(Exception e){
				System.exit(0);
			}
		} try{

				StringTokenizer st=new StringTokenizer(name," ");
			     while (st.hasMoreTokens()) {
			    	 a[i]=Integer.parseInt(st.nextToken());
			    	 i++;
			     }i=0;

			     if (a[0] > a[1]) {
			            x = a[0];
			            y = a[1];
			        } else {
			            x = a[1];
			            y = a[0];
			        }

			     while((tmp=x%y)!=0){
			    	 tmp=x%y;
			    	 x = y;
			         y = tmp;
			     }

			     System.out.println(y+" "+a[0]/y*a[1]);
				a[0]=0;
				a[1]=0;
				x=0;
				y=0;
				tmp=0;
				name=br.readLine();
			}

			catch(Exception e){
				System.exit(0);
			} catch(Exception e){
				System.exit(0);
			} Exception e {
				System.exit(0);
			} System.exit(0) System.exit System 0 {

				StringTokenizer st=new StringTokenizer(name," ");
			     while (st.hasMoreTokens()) {
			    	 a[i]=Integer.parseInt(st.nextToken());
			    	 i++;
			     }i=0;

			     if (a[0] > a[1]) {
			            x = a[0];
			            y = a[1];
			        } else {
			            x = a[1];
			            y = a[0];
			        }

			     while((tmp=x%y)!=0){
			    	 tmp=x%y;
			    	 x = y;
			         y = tmp;
			     }

			     System.out.println(y+" "+a[0]/y*a[1]);
				a[0]=0;
				a[1]=0;
				x=0;
				y=0;
				tmp=0;
				name=br.readLine();
			} StringTokenizer st=new StringTokenizer(name," "); st new StringTokenizer(name," ") while (st.hasMoreTokens()) {
			    	 a[i]=Integer.parseInt(st.nextToken());
			    	 i++;
			     } st.hasMoreTokens() st.hasMoreTokens st {
			    	 a[i]=Integer.parseInt(st.nextToken());
			    	 i++;
			     } a[i]=Integer.parseInt(st.nextToken()) a[i] a i Integer.parseInt(st.nextToken()) Integer.parseInt Integer st.nextToken() st.nextToken st i++ i i=0 i 0 if (a[0] > a[1]) {
			            x = a[0];
			            y = a[1];
			        } else {
			            x = a[1];
			            y = a[0];
			        } a[0] > a[1] a[0] a 0 a[1] a 1 {
			            x = a[0];
			            y = a[1];
			        } x = a[0] x a[0] a 0 y = a[1] y a[1] a 1 {
			            x = a[1];
			            y = a[0];
			        } x = a[1] x a[1] a 1 y = a[0] y a[0] a 0 while((tmp=x%y)!=0){
			    	 tmp=x%y;
			    	 x = y;
			         y = tmp;
			     } (tmp=x%y)!=0 (tmp=x%y) tmp x%y x y 0 {
			    	 tmp=x%y;
			    	 x = y;
			         y = tmp;
			     } tmp=x%y tmp x%y x y x = y x y y = tmp y tmp System.out.println(y+" "+a[0]/y*a[1]) System.out.println System.out System System.out y+" "+a[0]/y*a[1] y+" "+a[0]/y*a[1] y " " a[0]/y*a[1] a[0]/y a[0] a 0 y a[1] a 1 a[0]=0 a[0] a 0 0 a[1]=0 a[1] a 1 0 x=0 x 0 y=0 y 0 tmp=0 tmp 0 name=br.readLine() name br.readLine() br.readLine br String[] args args
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;


class Main{
	public static void main(String[] args)throws IOException{
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		String name=br.readLine();
		int num;
		int compare;

		int[] a=new int[2];
		int i=0;

		int tmp;
		int x,y;
		while(true){

			try{

				StringTokenizer st=new StringTokenizer(name," ");
			     while (st.hasMoreTokens()) {
			    	 a[i]=Integer.parseInt(st.nextToken());
			    	 i++;
			     }i=0;

			     if (a[0] > a[1]) {
			            x = a[0];
			            y = a[1];
			        } else {
			            x = a[1];
			            y = a[0];
			        }

			     while((tmp=x%y)!=0){
			    	 tmp=x%y;
			    	 x = y;
			         y = tmp;
			     }

			     System.out.println(y+" "+a[0]/y*a[1]);
				a[0]=0;
				a[1]=0;
				x=0;
				y=0;
				tmp=0;
				name=br.readLine();
			}

			catch(Exception e){
				System.exit(0);
			}
		}
	}
}