//ans=0 first -> 0 second use define
//gcd(m,n) dont using /
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<bits/stdc++.h>
#define ll long long
#define ddd printf("-----------------debug\n");
using namespace std;
int gcd(int a,int b){
return b==0 ? a:gcd(b,a%b);
}
int main()
{
ios::sync_with_stdio(false);
int T;
cin>>T;
while(T--)
{
int a0,a1,b0,b1,ans=0;
cin>>a0>>a1>>b0>>b1;
for(int i=1;i*i<=b1;i++)
{
int p=a0/a1,q=b1/b0;
if(b1%i==0)
{
if(i%a1==0&&gcd(q,b1/i)==1&&gcd(i/a1,p)==1) ans++;
int y=b1/i;
if(i==y) continue;//
if(y%a1==0&&gcd(q,b1/y)==1&&gcd(y/a1,p)==1) ans++;
}
}
cout<<ans<<endl;
}
return 0;
}