#include <stdio.h>
#include <math.h>
int hz(int a,int b)//互质则最大公约数为1
{
int temp;
while(b!=0)//辗转相除法求最大公约数
{
temp=b;
b=a%b;
a=temp;
}
if(a==1)
return 1;
else
return 0;
}
int main()
{
int x0,y0;
while(scanf("%d%d",&x0,&y0),x0!=0||y0!=0)
{
int i,j,num=0;
for(i=x0;i<=y0;i+=x0)//寻找P、Q
{
j=x0*y0/i;
if(i*j==x0*y0&&j%x0==0)//这两个数的乘积等于他们最大公约数与最小公倍数的乘积
{
if(hz(i/x0,j/x0))//如果i/x0、j/x0互质
num++;
}
}
printf("%d\n",num);
}
return 0;
}
/*
3 60
15 12
12 15
60 3
*/
#include <math.h>
int hz(int a,int b)//互质则最大公约数为1
{
int temp;
while(b!=0)//辗转相除法求最大公约数
{
temp=b;
b=a%b;
a=temp;
}
if(a==1)
return 1;
else
return 0;
}
int main()
{
int x0,y0;
while(scanf("%d%d",&x0,&y0),x0!=0||y0!=0)
{
int i,j,num=0;
for(i=x0;i<=y0;i+=x0)//寻找P、Q
{
j=x0*y0/i;
if(i*j==x0*y0&&j%x0==0)//这两个数的乘积等于他们最大公约数与最小公倍数的乘积
{
if(hz(i/x0,j/x0))//如果i/x0、j/x0互质
num++;
}
}
printf("%d\n",num);
}
return 0;
}
/*
3 60
15 12
12 15
60 3
*/