# import bisect

# import copy

import fractions

# import math

# import numpy as np

# from collections import Counter, deque

# from itertools import accumulate,permutations, combinations,combinations_with_replacement,product



def resolve():

    A,B=list(map(int,input().split()))

    print((A*B//fractions.gcd(A,B)))





resolve()
import fractions

import sys

sys.setrecursionlimit(10 ** 5 + 10)

def input(): return sys.stdin.readline().strip()



def resolve():

    A,B=list(map(int,input().split()))

    val=A* B //fractions.gcd(A, B)

    print(val)



resolve()

# import bisect
# import copy
import fractions

# import math
# import numpy as np
# from collections import Counter, deque
# from itertools import accumulate,permutations, combinations,combinations_with_replacement,product
def resolve():
    A, B = list(map(int, input().split()))
    print((A * B // fractions.gcd(A, B)))


resolve()

import fractions
import sys

sys.setrecursionlimit(10**5 + 10)


def input():
    return sys.stdin.readline().strip()


def resolve():
    A, B = list(map(int, input().split()))
    val = A * B // fractions.gcd(A, B)
    print(val)


resolve()

-# import bisect -# import copy +import sys -# import math -# import numpy as np -# from collections import Counter, deque -# from itertools import accumulate,permutations, combinations,combinations_with_replacement,product +sys.setrecursionlimit(10**5 + 10) + + +def input(): +    return sys.stdin.readline().strip() + + -    print((A * B // fractions.gcd(A, B))) +    val = A * B // fractions.gcd(A, B) +    print(val)