A, B = gets.chomp.split.map(&:to_i)

def gcd(a, b)
  a, b = b, a if a < b

  while b > 0
    a, b = b, a % b
  end
  a
end

def fetch_prime_list(max)
  table = Array.new(max + 1,true)
  is_prime = Hash.new(false)

  (2..max).each do |num|
    if table[num] == true
      is_prime[num] = true
      k = num * num
      while k <= max
        table[k] = false
        k += num
      end
    end
  end
  return is_prime
end

g = gcd(A, B)
p = []

1.upto(Math.sqrt(g).to_i) do |i|
  if g % i == 0
    p << i
    p << g / i
  end
end

is_prime = fetch_prime_list(g)

ans = 1

p.each do |num|
  ans += 1 if is_prime[num]
end

p ans
