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>

int cmp_max(int a, int b){
  if(a < b){
    return (b);
  }else{
    return (a);
  }
}

int cmp_min(int a, int b){
  if(a < b){
    return (a);
  }else{
    return (b);
  }
}
int main(){
  int a, b;
  int result1, result2, i;
  int min, max;
  while(scanf("%d %d", &a, &b) != EOF){
    result1 = result2 = 0;
    min = cmp_min(a, b);
    max = cmp_max(a, b);
    for(i = 1; i <= max; i++){
      if(a % i == 0 && b % i == 0){
	result1 = i;
      }
    }
    for(i = max;;i++){
      if(i % a == 0 && i % b == 0){
	result2 = i;
	break;
      }
    }
    printf("%d %d\n", result1, result2);
  }
  return 0;
}