# https://atcoder.jp/contests/abc142/tasks/abc142_d
# 公約数とは、最大公約数の約数

import sys
import math
from functools import reduce

input = sys.stdin.readline

A, B = [int(x) for x in input().split()]


def gcd(*numbers):
    return reduce(math.gcd, numbers)

# 素因数分解
# 考え方：1~√nまで実際に割れるか試せば良いが、割れた場合は割れる限りその数で割り続ける
# 計算量：O(√n)
def prime_factorize(n):
    i = 2
    primes = []
    while i * i <= n:
        if n % i != 0:
            i += 1
            continue
        exp = 0
        while n % i == 0:
            exp += 1
            n = n // i
        primes.append([i, exp])
        i += 1
    # 最後に残った数は1か素数にしかならない
    if n != 1:
        primes.append([n, 1])
    return primes

g = gcd(A, B)
divisors = prime_factorize(g)
print(len(divisors)+1)
 import sys sys import math math from functools import reduce input = sys.stdin.readline input sys.stdin.readline sys.stdin sys stdin readline int(x) for x in input().split() for x in input().split() x input().split() ().split () input split for x in input().split() int(x) int x A, B = [int(x) for x in input().split()] A [int(x) for x in input().split()] B def gcd(*numbers):
    return reduce(math.gcd, numbers)

# 素因数分解
# 考え方：1~√nまで実際に割れるか試せば良いが、割れた場合は割れる限りその数で割り続ける
# 計算量：O(√n) gcd return reduce(math.gcd, numbers) reduce(math.gcd, numbers) reduce math.gcd math gcd numbers *numbers def prime_factorize(n):
    i = 2
    primes = []
    while i * i <= n:
        if n % i != 0:
            i += 1
            continue
        exp = 0
        while n % i == 0:
            exp += 1
            n = n // i
        primes.append([i, exp])
        i += 1
    # 最後に残った数は1か素数にしかならない
    if n != 1:
        primes.append([n, 1])
    return primes prime_factorize i = 2 i 2 primes = [] primes [] while i * i <= n:
        if n % i != 0:
            i += 1
            continue
        exp = 0
        while n % i == 0:
            exp += 1
            n = n // i
        primes.append([i, exp])
        i += 1
    # 最後に残った数は1か素数にしかならない
     i * i <= n i * i i i n if n % i != 0:
            i += 1
            continue
         n % i != 0 n % i n i 0 i += 1 i 1 continue exp = 0 exp 0 while n % i == 0:
            exp += 1
            n = n // i
         n % i == 0 n % i n i 0 exp += 1 exp 1 n = n // i n n // i n i primes.append([i, exp]) primes.append primes append [i, exp] i exp i += 1 i 1 if n != 1:
        primes.append([n, 1])
     n != 1 n 1 primes.append([n, 1]) primes.append primes append [n, 1] n 1 return primes primes n n g = gcd(A, B) g gcd(A, B) gcd A B divisors = prime_factorize(g) divisors prime_factorize(g) prime_factorize g print(len(divisors)+1) print len(divisors)+1 len(divisors) len divisors 1 divisors = prime_factorize(g) prime_factorize(g) divisors def gcd(*numbers):
    return reduce(math.gcd, numbers)

# 素因数分解
# 考え方：1~√nまで実際に割れるか試せば良いが、割れた場合は割れる限りその数で割り続ける
# 計算量：O(√n) def gcd(*numbers):
    return reduce(math.gcd, numbers)

# 素因数分解
# 考え方：1~√nまで実際に割れるか試せば良いが、割れた場合は割れる限りその数で割り続ける
# 計算量：O(√n) gcd def prime_factorize(n):
    i = 2
    primes = []
    while i * i <= n:
        if n % i != 0:
            i += 1
            continue
        exp = 0
        while n % i == 0:
            exp += 1
            n = n // i
        primes.append([i, exp])
        i += 1
    # 最後に残った数は1か素数にしかならない
    if n != 1:
        primes.append([n, 1])
    return primes def prime_factorize(n):
    i = 2
    primes = []
    while i * i <= n:
        if n % i != 0:
            i += 1
            continue
        exp = 0
        while n % i == 0:
            exp += 1
            n = n // i
        primes.append([i, exp])
        i += 1
    # 最後に残った数は1か素数にしかならない
    if n != 1:
        primes.append([n, 1])
    return primes prime_factorize input = sys.stdin.readline sys.stdin.readline input B = [int(x) for x in input().split()] [int(x) for x in input().split()] B g = gcd(A, B) gcd(A, B) g A, B = [int(x) for x in input().split()] [int(x) for x in input().split()] A
# https://atcoder.jp/contests/abc142/tasks/abc142_d
# 公約数とは、最大公約数の約数

import sys
import math
from functools import reduce

input = sys.stdin.readline

A, B = [int(x) for x in input().split()]


def gcd(*numbers):
    return reduce(math.gcd, numbers)

# 素因数分解
# 考え方：1~√nまで実際に割れるか試せば良いが、割れた場合は割れる限りその数で割り続ける
# 計算量：O(√n)
def prime_factorize(n):
    i = 2
    primes = []
    while i * i <= n:
        if n % i != 0:
            i += 1
            continue
        exp = 0
        while n % i == 0:
            exp += 1
            n = n // i
        primes.append([i, exp])
        i += 1
    # 最後に残った数は1か素数にしかならない
    if n != 1:
        primes.append([n, 1])
    return primes

g = gcd(A, B)
divisors = prime_factorize(g)
print(len(divisors)+1)

