object Main {
  def main(args:Array[String]) = {
    val sc = new java.util.Scanner(System.in)
    val a, b = sc.nextLong
    // 最大公約数
    val g = gcd(a, b)

    // 割っていく
    var result = 0
    var current_g = g
    for(v<- 2 to Math.sqrt(g).toInt+1 if current_g != 1 && current_g % v == 0) {
      while(current_g % v == 0) {
        // 割り切れるだけ割る
        current_g = current_g / v
      }
      result += 1
    }
    result = result match {
      case 0 => 2 // 1回も割れなかった場合
      case v => v+1
    }
    println(result)
    
  }
  def gcd(a:Long, b:Long): Long = {
    var x = Math.max(a,b)
    var y = Math.min(a,b)
    var m = x % y
    while(m!=0) {
      x = y
      y = m
      m = x % y
    }
    return y
  }
}
