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: Accepted)

using System;

namespace Prob0005
{
    class Program
    {
        static void Main(string[] args)
        {
            string line;
            while((line = Console.ReadLine()) != null)
            {
                string[] tokens = line.Split(' ');
                int a = int.Parse(tokens[0]);
                int b = int.Parse(tokens[1]);

                // 例外処理： どちらかが0の場合
                if(a == 0 || b == 0)
                {
                    Console.WriteLine("0 0");
                    continue;
                }

                int gcd = calcGCD(a, b);
                // LCM = a * b / GCD
                // ただし、(a * b)の時点でint型の最大値を
                // 超える懸念があるので計算順は a / GCD * b とする
                Console.WriteLine("{0} {1}", gcd, a / gcd * b);
            }
        }

        // Euclidean Algorithm
        static int calcGCD(int a, int b)
        {
                int tmp;
                if(a < b)
                {
                    tmp = a;
                    a = b;
                    b = tmp;
                }

                while(a % b != 0)
                {
                    tmp = a % b;
                    a = b;
                    b = tmp;
                }

                return b;
        }
    }
}