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 main()
{
    unsigned long int x,y,a,b,c,i,j;
    while (scanf("%d%d",&x,&y) != EOF){
        if(x > y){
            a=x;
            b=y;
            for(;;){
                c = a % b;
                if(a % b == 0){
                    break;
                }
                a=b;
                b=c;
            }
            for(i = 2;;i++){
                if(a % i ==0 && b % i ==0)
                break;
            }
        }
        else if(x < y){
            a=y;
            b=x;
            for(;;){
                c = a % b;
                if(a % b == 0){
                    break;
                }
                a=b;
                b=c;
            }
            for(i = 2;;i++){
                if(a % i ==0 && b % i ==0)
                break;
            }
        }
        j=(x/b)*(y/b)*b;
        printf("%d %d\n",b,j);
    }
    return 0;
}