Problem:
GCD and LCM

Write a program which computes the greatest common divisor (GCD) and the least common multiple (LCM) of given a and b.

Input

Input consists of several data sets. Each data set contains a and b separated by a single space in a line. The input terminates with EOF.

Constraints

0 < a, b ≤ 2,000,000,000

LCM(a, b) ≤ 2,000,000,000

The number of data sets ≤ 50

Output

For each data set, print GCD and LCM separated by a single space in a line.

Sample Input

8 6
50000000 30000000

Output for the Sample Input

2 24
10000000 150000000

Solution in C (judge verdict: Time Limit Exceeded)

#include <stdio.h>
#define max(a,b) ((a)<(b) ? (a):(b))
int main(void)
{
	int a,b,i,j;

	while(scanf("%d %d",&a,&b) != EOF){
						if((a % 2 == 0)&&(b % 2 == 0)){
										for(i = 1;i <= max(a,b);i++){
														if(((a/2) % i == 0)&&((b/2) % i == 0)){
																		j = i;
																	      }
													     }
										printf("%d %d\n",2*j,a/2/j*b);
									      }else{
											for(i = 1;i <= max(a,b);i++){
															if((a % i == 0)&&(b % i == 0)){
																			j = i;
													   				      	      }
									       					   }
											printf("%d %d\n",j,a/j*b);
					  				           }
					  }
	return 0;
}