Problem:
Score : 300 points

Problem Statement

Takahashi is organizing a party.

At the party, each guest will receive one or more snack pieces.

Takahashi predicts that the number of guests at this party will be A or B.

Find the minimum number of pieces that can be evenly distributed to the guests in both of the cases predicted.

We assume that a piece cannot be divided and distributed to multiple guests.

Constraints

1 \leq A, B \leq 10^5

A \neq B

All values in input are integers.

Input

Input is given from Standard Input in the following format:

A B

Output

Print the minimum number of pieces that can be evenly distributed to the guests in both of the cases with A guests and B guests.

Sample Input 1

2 3

Sample Output 1

6

When we have six snack pieces, each guest can take three pieces if we have two guests, and each guest can take two if we have three guests.

Sample Input 2

123 456

Sample Output 2

18696

Sample Input 3

100000 99999

Sample Output 3

9999900000

Solution in JavaScript (node.js v5.12) (judge verdict: Accepted)

// inputに入力データ全体が入る
function Main(input) {
	// 1行目がinput[0], 2行目がinput[1], …に入る
	input = input.split("\n");
	//文字列から10進数に変換するときはparseIntを使います
    input[0] = input[0].split(" ");
	var a = parseInt(input[0][0], 10);
  	var aft = a;
    var b = parseInt(input[0][1], 10);
    var bft = b;
  	var aso = new Array(100000);
    var bso = new Array(100000);
    var ans = 1;
    aso[0] = 0;
    aso[1] = 0;
    bso[0] = 0;
    bso[1] = 0;
	for(var i=2; i<=100000; i++){
      aso[i] = 0;
      bso[i] = 0;
      for(var j=0; j<1; j){
        if(a%i == 0){
           a = a/i;
           aso[i] += 1;
        }else{
           j = 1;
        }
      }
      for(var j=0; j<1; j){
        if(b%i == 0){
           b = b/i;
           bso[i] += 1;
        }else{
           j = 1;
        }
      }
    }
  for(var i=2; i<=100000; i++){
    if(aso[i] != 0 && bso[i] != 0){
      for(var j=0; j<Math.max(aso[i], bso[i]); j++){
        ans *= i;
      }
  }else if(aso[i] != 0){
      for(var j=0; j<aso[i]; j++){
        ans *= i;
      }
  }else if(bso[i] != 0){
      for(var j=0; j<bso[i]; j++){
        ans *= i;
      }
  }
  }
  /*
  var max = 0;
  if(max < ans){
    max = ans;
  }
  if(max < aft){
     max = aft;
  }
  if(max < bft){
    max = bft;
  }
  */
  console.log(ans);
}
//*この行以降は編集しないでください（標準入出力から一度に読み込み、Mainを呼び出します）
Main(require("fs").readFileSync("/dev/stdin", "utf8"));