# include <iostream>//找出有多少个公因子，且公因子必须为素数，然后+1
# include <cstdio>
# include <cmath>
# include <vector>
# include <algorithm>
using namespace std;
# define int long long
bool isprime(int n)
{
	if(n==1) return false;
	if(n==2) return true;
	if(n%2==0) return false;
	int num=sqrt(n);
	for(int i=3;i<num+1;i+=2)
	{
		if(n%i==0) return false;
	}
	return true;
}
vector<int> v;//创建一个动态数组
signed main()
{
	int n,m;
	cin>>n>>m;
	int temp=min(n,m);
	for(int i=1;i*i<temp;i++)//先找到较小数所有的公因子
	{
		if(temp%i==0)
		{
			v.push_back(i);
			if(i*i!=temp)
			{
				v.push_back(temp/i);
			}
		}
	}
	int ans=0;
	int t=max(n,m);
	for(int i=0;i<v.size();i++)
	{
		if(t%v[i]==0 && isprime(v[i])) ans++;//判断是不是较大数的公因数并且是否是素数
	}
	cout<<ans+1<<endl;
	return 0;
}