function myout(text){console.log(text);}//standard output
function Main(input) {
	//input = parseInt(input);
	//input = input.trim().split(" ");
	//input = input.trim().split("\n");
	input = input.trim().split(" ").map((a)=>Number(a));
	//input = input.trim().split("\n").map((a)=>Number(a));
  var A = input[0];
  var B = input[1];
  var tmpGcd = gcd(A, B);
  if(tmpGcd == 1){
     myout("1");
    return;
     }
  var list = [];
  for(var i = 1; i * i <= tmpGcd; i++){
    if(A % i == 0 && B % i == 0){
       list.push(i);
      if(i * i != tmpGcd){
         list.push(tmpGcd / i);
         }
    }
  }
  
  list.sort(function(a,b){
  	return a - b;
  });
  
  //myout(list);
  var output = 1;
  for(var j = 1; j < list.length; j++){
    var tmp = list[j];
    if(isPrime(tmp)){
      output++;
    }
  }
  myout(output);
}

//最大公約数
function gcd(m, n) {
    if(m < n) return gcd(n, m);
    if(n == 0) return m;
    return gcd(n, m % n);
}

function isPrime(n){
    if(false===Number.isInteger(n)){
        return false;
    }
    if(n<=1){
        return false;
    }
    if(2===n){
        return true;
    }
    if(0===n%2){
        return false;
    }
    var square_root = Math.floor(Math.sqrt(n));
    for(var i=3; i<=square_root; i+=2){
        if(0===n%i){
            return false;
        }
    }
    return true;
}

Main(require("fs").readFileSync("/dev/stdin", "utf8").trim());
