#D 素数の公約数-> 素因数分解で共通な素因数を求めて個数を入力
import sys
a, b = map(int, input().split())

#素因数分解(2以降)
def factorization(n):
    arr = []
    tmp = n
    #2から√n でnを割る ･･･割れた回数を指数として追加
    for i in range(2, int(n ** 0.5 // 1) + 1):
        if tmp % i == 0:
            cnt = 0
            while tmp % i == 0:
                cnt += 1
                tmp //= i
            arr.append([i, cnt])
    if tmp != 1:  #割り切れなかったとき
        arr.append([tmp, 1])
    if arr == []: #素数の場合(割れなかった場合)
        arr.append([n, 1])
    return arr

a = factorization(a)
b = factorization(b)
ans = 1
# print(a, b)
if a[0][0] == b[0][0] == 1:
    print(ans)
    sys.exit()
for i in a:
    for j in b:
        if i[0] == j[0]:
            ans += 1
print(ans) import sys sys a, b = map(int, input().split()) a map(int, input().split()) map int input().split() ().split () input split b def factorization(n):
    arr = []
    tmp = n
    #2から√n でnを割る ･･･割れた回数を指数として追加
    for i in range(2, int(n ** 0.5 // 1) + 1):
        if tmp % i == 0:
            cnt = 0
            while tmp % i == 0:
                cnt += 1
                tmp //= i
            arr.append([i, cnt])
    if tmp != 1:  #割り切れなかったとき
        arr.append([tmp, 1])
    if arr == []: #素数の場合(割れなかった場合)
        arr.append([n, 1])
    return arr factorization arr = [] arr [] tmp = n tmp n for i in range(2, int(n ** 0.5 // 1) + 1):
        if tmp % i == 0:
            cnt = 0
            while tmp % i == 0:
                cnt += 1
                tmp //= i
            arr.append([i, cnt])
     i range(2, int(n ** 0.5 // 1) + 1) range 2 int(n ** 0.5 // 1) + 1 int(n ** 0.5 // 1) int n ** 0.5 // 1 n ** 0.5 n 0.5 1 1 if tmp % i == 0:
            cnt = 0
            while tmp % i == 0:
                cnt += 1
                tmp //= i
            arr.append([i, cnt])
     tmp % i == 0 tmp % i tmp i 0 cnt = 0 cnt 0 while tmp % i == 0:
                cnt += 1
                tmp //= i
             tmp % i == 0 tmp % i tmp i 0 cnt += 1 cnt 1 tmp //= i tmp i arr.append([i, cnt]) arr.append arr append [i, cnt] i cnt if tmp != 1:  #割り切れなかったとき
        arr.append([tmp, 1])
     tmp != 1 tmp 1 arr.append([tmp, 1]) arr.append arr append [tmp, 1] tmp 1 if arr == []: #素数の場合(割れなかった場合)
        arr.append([n, 1])
     arr == [] arr [] arr.append([n, 1]) arr.append arr append [n, 1] n 1 return arr arr n n a = factorization(a) a factorization(a) factorization a b = factorization(b) b factorization(b) factorization b ans = 1 ans 1 if a[0][0] == b[0][0] == 1:
    print(ans)
    sys.exit() a[0][0] == b[0][0] == 1 a[0][0] == b[0][0] a[0][0] [0] a 0 0 b[0][0] [0] b 0 0 1 print(ans) print ans sys.exit() sys.exit sys exit for i in a:
    for j in b:
        if i[0] == j[0]:
            ans += 1 i a for j in b:
        if i[0] == j[0]:
            ans += 1 j b if i[0] == j[0]:
            ans += 1 i[0] == j[0] i[0] i 0 j[0] j 0 ans += 1 ans 1 print(ans) print ans b = factorization(b) factorization(b) b b = map(int, input().split()) map(int, input().split()) b a = factorization(a) factorization(a) a a, b = map(int, input().split()) map(int, input().split()) a def factorization(n):
    arr = []
    tmp = n
    #2から√n でnを割る ･･･割れた回数を指数として追加
    for i in range(2, int(n ** 0.5 // 1) + 1):
        if tmp % i == 0:
            cnt = 0
            while tmp % i == 0:
                cnt += 1
                tmp //= i
            arr.append([i, cnt])
    if tmp != 1:  #割り切れなかったとき
        arr.append([tmp, 1])
    if arr == []: #素数の場合(割れなかった場合)
        arr.append([n, 1])
    return arr def factorization(n):
    arr = []
    tmp = n
    #2から√n でnを割る ･･･割れた回数を指数として追加
    for i in range(2, int(n ** 0.5 // 1) + 1):
        if tmp % i == 0:
            cnt = 0
            while tmp % i == 0:
                cnt += 1
                tmp //= i
            arr.append([i, cnt])
    if tmp != 1:  #割り切れなかったとき
        arr.append([tmp, 1])
    if arr == []: #素数の場合(割れなかった場合)
        arr.append([n, 1])
    return arr factorization ans = 1 1 ans ans += 1 1 ans
#D 素数の公約数-> 素因数分解で共通な素因数を求めて個数を入力
import sys
a, b = map(int, input().split())

#素因数分解(2以降)
def factorization(n):
    arr = []
    tmp = n
    #2から√n でnを割る ･･･割れた回数を指数として追加
    for i in range(2, int(n ** 0.5 // 1) + 1):
        if tmp % i == 0:
            cnt = 0
            while tmp % i == 0:
                cnt += 1
                tmp //= i
            arr.append([i, cnt])
    if tmp != 1:  #割り切れなかったとき
        arr.append([tmp, 1])
    if arr == []: #素数の場合(割れなかった場合)
        arr.append([n, 1])
    return arr

a = factorization(a)
b = factorization(b)
ans = 1
# print(a, b)
if a[0][0] == b[0][0] == 1:
    print(ans)
    sys.exit()
for i in a:
    for j in b:
        if i[0] == j[0]:
            ans += 1
print(ans)