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 JAVA (judge verdict: Wrong Answer)

import java.util.Scanner;
import java.util.Arrays;
import java.util.ArrayList;

class Main{
  public static void main(String[] args){
    ArrayList<Integer> array = new ArrayList<Integer>();
    ArrayList<Integer> array2 = new ArrayList<Integer>();
    Scanner in = new Scanner(System.in);
    String n = in.nextLine();
    String[] str = n.split(" ");  
    Arrays.sort(str);
    //a < b
    int a = Integer.parseInt(str[0]);
    int b = Integer.parseInt(str[1]); 
    //System.out.println(Arrays.toString(str));
    //System.out.println(a);
    array.add(b);
    array.add(a);
    for (int i = 0; i < a; i++){
      array.add(Math.abs(array.get(i) - array.get(i + 1)));
    }
   // for (int s: array){
    //  System.out.println(s);
   // }
    for (int i = 0; i < a; i++){
      if (array.get(i) == 0){
        array2.add(i);
        }
      }
        //for (int s: array2){
       // System.out.println(s + "kk");
   // }
    int min = array.get(array2.get(0) - 1);
    int max = a * b / min;
    System.out.print(min + " " + max);
  }
}