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

a, b = [int(i) for i in input().split()]
ma = gcd(a, b)
st = set()
for i in range(1, int(math.sqrt(ma) + 1)):
	if ma % i == 0:
		flg = True
		for j in st:
			if gcd(i, j) != 1:
				if i < j:
					st.remove(j)
					st.add(i)
				flg = False
				break
		if flg:
			st.add(i)
		flg = True
		ii = ma // i
		for j in st:
			if gcd(ii, j) != 1:
				if ii < j:
					st.remove(j)
					st.add(ii)
				flg = False
				break
		if flg:
			st.add(ii)
print (len(st)) import math math def gcd(a, b):
    if (b == 0):
        return a
    return gcd(b, a % b) gcd if (b == 0):
        return a
     b == 0 b 0 return a a return gcd(b, a % b) gcd(b, a % b) gcd b a % b a b a a b b int(i) for i in input().split() for i in input().split() i input().split() ().split () input split for i in input().split() int(i) int i a, b = [int(i) for i in input().split()] a [int(i) for i in input().split()] b ma = gcd(a, b) ma gcd(a, b) gcd a b st = set() st set() set for i in range(1, int(math.sqrt(ma) + 1)):
	if ma % i == 0:
		flg = True
		for j in st:
			if gcd(i, j) != 1:
				if i < j:
					st.remove(j)
					st.add(i)
				flg = False
				break
		if flg:
			st.add(i)
		flg = True
		ii = ma // i
		for j in st:
			if gcd(ii, j) != 1:
				if ii < j:
					st.remove(j)
					st.add(ii)
				flg = False
				break
		if flg:
			st.add(ii) i range(1, int(math.sqrt(ma) + 1)) range 1 int(math.sqrt(ma) + 1) int math.sqrt(ma) + 1 math.sqrt(ma) math.sqrt math sqrt ma 1 if ma % i == 0:
		flg = True
		for j in st:
			if gcd(i, j) != 1:
				if i < j:
					st.remove(j)
					st.add(i)
				flg = False
				break
		if flg:
			st.add(i)
		flg = True
		ii = ma // i
		for j in st:
			if gcd(ii, j) != 1:
				if ii < j:
					st.remove(j)
					st.add(ii)
				flg = False
				break
		if flg:
			st.add(ii) ma % i == 0 ma % i ma i 0 flg = True flg True for j in st:
			if gcd(i, j) != 1:
				if i < j:
					st.remove(j)
					st.add(i)
				flg = False
				break
		 j st if gcd(i, j) != 1:
				if i < j:
					st.remove(j)
					st.add(i)
				flg = False
				break
		 gcd(i, j) != 1 gcd(i, j) gcd i j 1 if i < j:
					st.remove(j)
					st.add(i)
				 i < j i j st.remove(j) st.remove st remove j st.add(i) st.add st add i flg = False flg False break if flg:
			st.add(i)
		 flg st.add(i) st.add st add i flg = True flg True ii = ma // i ii ma // i ma i for j in st:
			if gcd(ii, j) != 1:
				if ii < j:
					st.remove(j)
					st.add(ii)
				flg = False
				break
		 j st if gcd(ii, j) != 1:
				if ii < j:
					st.remove(j)
					st.add(ii)
				flg = False
				break
		 gcd(ii, j) != 1 gcd(ii, j) gcd ii j 1 if ii < j:
					st.remove(j)
					st.add(ii)
				 ii < j ii j st.remove(j) st.remove st remove j st.add(ii) st.add st add ii flg = False flg False break if flg:
			st.add(ii) flg st.add(ii) st.add st add ii print (len(st)) print len(st) len st b = [int(i) for i in input().split()] [int(i) for i in input().split()] b flg = True True flg ma = gcd(a, b) gcd(a, b) ma flg = True True flg ii = ma // i ma // i ii flg = False False flg st = set() set() st a, b = [int(i) for i in input().split()] [int(i) for i in input().split()] a def gcd(a, b):
    if (b == 0):
        return a
    return gcd(b, a % b) def gcd(a, b):
    if (b == 0):
        return a
    return gcd(b, a % b) gcd flg = False False flg
import math
def gcd(a, b):
    if (b == 0):
        return a
    return gcd(b, a % b)

a, b = [int(i) for i in input().split()]
ma = gcd(a, b)
st = set()
for i in range(1, int(math.sqrt(ma) + 1)):
	if ma % i == 0:
		flg = True
		for j in st:
			if gcd(i, j) != 1:
				if i < j:
					st.remove(j)
					st.add(i)
				flg = False
				break
		if flg:
			st.add(i)
		flg = True
		ii = ma // i
		for j in st:
			if gcd(ii, j) != 1:
				if ii < j:
					st.remove(j)
					st.add(ii)
				flg = False
				break
		if flg:
			st.add(ii)
print (len(st))