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;
using System.Linq;

class GcdAndLcm 
{
    static void Main()
    {
        var q =
            from nums in
                from line in GetProblems()
                select line.Split( ' ' )
                    .Select( long.Parse )
                    .ToArray()
            let gcd = GetGcd( nums[0], nums[1] )
            let lcm = ( nums[0] * nums[1] ) / gcd
            select string.Format("{0} {1}\n", gcd, lcm );
        Console.Write( new string( q.SelectMany( _ => _ ).ToArray() ) );
    }

    static System.Collections.Generic.IEnumerable<string> GetProblems()
    {
        var buffer = "";
        while ( !string.IsNullOrEmpty( buffer = Console.ReadLine() ) )
            yield return buffer;
    }

    static long GetGcd(long a, long b)
    {   // Euclidean Algorithm
        var rem = 0L;
        while ( ( rem = a % b ) != 0 )
        {
            a = b;
            b = rem;
        } 
        return b;
    }
}