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 Ruby (2.3.3) (judge verdict: Accepted)

# A B

a, b = gets.chomp.split(" ").map(&:to_i)

def eratosthenes_sieve(n)
  check = Array.new(n, false)
  primes = []

  (2..n).each do |i|
    if !check[i]
      primes << i

      (i..n).step(i).each do |j|
        check[j] = true
      end
    end
  end

  primes
end

def prime_factorization(n)
  m = n
  result = []
  primes = eratosthenes_sieve(Math.sqrt(n).ceil)

  while true
    found = false

    primes.each do |pr|
      if m % pr == 0
        result << pr
        found = true
        m = m / pr
        break
      end
    end

    if !found
      result << m if m != 1
      break
    end
  end

  result
end

p_a = prime_factorization(a)
p_b = prime_factorization(b)

h_a = {}
h_b = {}

p_a.each do |i|
  h_a[i] ||= 0
  h_a[i] += 1
end

p_b.each do |i|
  h_b[i] ||= 0
  h_b[i] += 1
end

prod = 1

(h_a.keys + h_b.keys).uniq.each do |k|
  a = h_a[k] || 0
  b = h_b[k] || 0
  c = [a, b].max

  c.times do
    prod = prod * k
  end
end

puts prod