/*****include*****/
#include <iostream>
#include <fstream>

/*****デバッグ定義*****/
//#define DEBUG
/*****マクロ定義*****/

/*****名前空間*****/
using namespace std;

/*****グローバル変数置き場*****/

/*****その他関数置き場*****/
long long int find_gcd(long long int int_a,long long int int_b){
	if(int_a == 0)	return int_b;
	else			return find_gcd(int_b%int_a,int_a);
}
/*****main関数*****/
int main(){
	/*****ファイルオープン*****/
#ifdef DEBUG
	ofstream fout("output.txt");
	ifstream fin("input.txt");
	if(!fout || !fin){
		cout << "Can't open the file.\n";
		return;
	}
#endif
	/*****変数置き場*****/
	
	
	
	/*****処理部*****/
	long long int int_a,int_b;
	long long int gcd,lcm;
	while(1){
		cin >> int_a >> int_b;
		gcd = find_gcd(int_a,int_b);
		lcm = int_a * int_b / gcd;
		cout << gcd << " " << lcm << endl;
	}
	/*****処理終了後*****/
#ifdef DEBUG
	fout.close();
	fin.close();
#endif
	return 0;
}