import math



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



# 素因数の個数(cnt)は使わないので省いた

def prime_factorize(n):

    res = [] # 結果を格納

    tmp = n # tmpにnをコピーしておく



    for i in range(2, int(math.sqrt(n))+1):

        if tmp % i == 0:

            while tmp % i == 0:

                tmp //= i

            res.append(i)



    # tmpに余った素数の処理

    if tmp != 1:

        res.append(tmp)



    # 何も割れなかったらnは素数なのでそのまま入れておく

    if res == [] and n != 1:

        res.append(n)



    return(res)



A_fac = set(prime_factorize(A))

B_fac = set(prime_factorize(B))



C = A_fac & B_fac

ans = len(C) + 1

print(ans)
import math



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



def gcd(a, b):

    if b == 0:

        return(a)

    else:

        return(gcd(b, a % b))



def prime_factorize(n):

    res = []

    tmp = n



    for i in range(2, int(math.sqrt(n))+1):

        if tmp % i == 0:

            cnt = 0

            while tmp % i == 0:

                cnt += 1

                tmp //= i

            res.append([i, cnt])



    if tmp != 1:

        res.append([tmp, 1])



    if len(res) == 0 and n != 1:

        res.append([n, 1])



    return(res)



c = gcd(A, B)

#print(c)

div = prime_factorize(c)

#print(div)

ans = len(div) + 1

print(ans)



import math

A, B = list(map(int, input().split()))
# 素因数の個数(cnt)は使わないので省いた
def prime_factorize(n):
    res = []  # 結果を格納
    tmp = n  # tmpにnをコピーしておく
    for i in range(2, int(math.sqrt(n)) + 1):
        if tmp % i == 0:
            while tmp % i == 0:
                tmp //= i
            res.append(i)
    # tmpに余った素数の処理
    if tmp != 1:
        res.append(tmp)
    # 何も割れなかったらnは素数なのでそのまま入れておく
    if res == [] and n != 1:
        res.append(n)
    return res


A_fac = set(prime_factorize(A))
B_fac = set(prime_factorize(B))
C = A_fac & B_fac
ans = len(C) + 1
print(ans)

import math

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


def gcd(a, b):
    if b == 0:
        return a
    else:
        return gcd(b, a % b)


def prime_factorize(n):
    res = []
    tmp = n
    for i in range(2, int(math.sqrt(n)) + 1):
        if tmp % i == 0:
            cnt = 0
            while tmp % i == 0:
                cnt += 1
                tmp //= i
            res.append([i, cnt])
    if tmp != 1:
        res.append([tmp, 1])
    if len(res) == 0 and n != 1:
        res.append([n, 1])
    return res


c = gcd(A, B)
# print(c)
div = prime_factorize(c)
# print(div)
ans = len(div) + 1
print(ans)

-# 素因数の個数(cnt)は使わないので省いた + + +def gcd(a, b): +    if b == 0: +        return a +    else: +        return gcd(b, a % b) + + -    res = []  # 結果を格納 -    tmp = n  # tmpにnをコピーしておく +    res = [] +    tmp = n +            cnt = 0 +                cnt += 1 -            res.append(i) -    # tmpに余った素数の処理 +            res.append([i, cnt]) -        res.append(tmp) -    # 何も割れなかったらnは素数なのでそのまま入れておく -    if res == [] and n != 1: -        res.append(n) +        res.append([tmp, 1]) +    if len(res) == 0 and n != 1: +        res.append([n, 1]) -A_fac = set(prime_factorize(A)) -B_fac = set(prime_factorize(B)) -C = A_fac & B_fac -ans = len(C) + 1 +c = gcd(A, B) +# print(c) +div = prime_factorize(c) +# print(div) +ans = len(div) + 1