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>
long int na,nb;
long int Min(long int a, long int b){
    if (a>b){
        return b;
    }else{
        return a;
    }
}
long int Max(long int a, long int b){
    if (a>b){
        return a;
    }else{
        return b;
    }
}
 
long int Yucurid(long int a,long int b){
    long int gcd,temp;
    gcd=Min(a,b);
    temp=(Max(a,b)-Min(a,b));
    if(gcd==temp){
        printf("%ld %ld\n",gcd,(na/gcd)*nb);
        return 0;
    }else{
        Yucurid(gcd,temp);
    }
}
 
int main(void) {
    na=8;
    nb=6;
    while(scanf("%ld %ld",&na,&nb)!=EOF){
        Yucurid(na,nb);
    }
        return 0;
}