#include<iostream>
using namespace std;
int pd(int x,int y){//求最大公约数的(辗转相除法)
int a,b;
if(x>y)
{
a=x;
b=y;
}
else{
a=y;
b=x;
}
int t;
while(a%b!=0){
t=b;
b=a%b;
a=t;
}
return b;
}
int main(){
int n,m;
cin >> n >> m;
int ans=0;
//两重循环只有80分,于是乎利用已知一个数p(利用一重循环遍历,
//还一个未知数q,他们俩的最大公约数和最小公倍数就是题目的n和m;
//所以q=n * m / q;
for(int i = n; i <= m; i+=n){
if(n * m % i == 0){
int q = n * m / i;
if(pd(i,q)==n)
ans++;
}
}
cout << ans;
return 0;
}