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 Rust (1.15.1) (judge verdict: Accepted)

macro_rules! extract {
    (String, $iter:expr) => {
        $iter.next().unwrap().trim().to_owned()
    };
    ($t:tt, $iter:expr) => {
        $iter.next().unwrap().trim().parse::<$t>().unwrap()
    };
}

macro_rules! read_split_impl {
    ( $e:expr, $( $t:tt ),* ) => {{
        let mut s = String::new();
        $e.read_line(&mut s).unwrap();
        let s = s.trim_right();
        let mut iter = s.split_whitespace();
        ( $(extract!($t, iter)),* )
    }};
}

macro_rules! read_split {
    ( $( $t:tt ),* ) => {
        read_split_impl!(std::io::stdin(), $($t),* )
    };
}

fn gcd(a: u64, b: u64) -> u64 {
    if a > b {
        gcd_impl(b, a)
    } else {
        gcd_impl(a, b)
    }
}

fn gcd_impl(a: u64, b: u64) -> u64 {
    if a == 0 {
        b
    } else {
        gcd_impl(b % a, a)
    }
}

fn lcm(a: u64, b: u64) -> u64 {
    (a / gcd(a, b)) * b
}

fn main() {
    let (a, b) = read_split!(u64, u64);

    print!("{}", lcm(a, b));
}