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>
/* Aizu Online Judge Problem 	*/
/* Volume0 0005:GCD and LCM 	*/

int main(void)
{
  int dat1, dat2;
  int gcd, lcm;
  int min;

  while(scanf("%d %d", &dat1, &dat2) != EOF)
  {
    //LCM
    lcm = min = (dat1 < dat2) ? dat1 : dat2;
    while(lcm > 1)
    {
      if( !(dat1 % lcm) && !(dat2 % lcm) )
        break;
      lcm--;
    }

    //GCD
    gcd  = (dat1 > dat2) ? dat1  : dat2 ;
    while(1)
    {
      if( gcd % min == 0 )
        break;
      gcd += (dat1 > dat2) ? dat1 : dat2;
    }

    printf("%d %d\n", lcm, gcd);
  }

  return 0;
}