#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <vector>
#include <map>
#include <set>
#include<bitset>
#include<list>
#include <algorithm>
#define pii pair<int,int>
#define pll pair<LL,LL>
#define pil pair<int,LL>
#define pli pair<LL,int>
#define pdd pair<db,db>
#define se second
#define fi first
#define endl '\n'
#define rep(i,a,b) for (register int i=a;i<b;++i)
#define per(i,a,b) for (register int i=a;i>b;--i)
#define MEM(a,x) memset(a,x,sizeof(a))
#define M(x) ((x)%MOD)
#define db double
#define eps 1e-9
typedef long long LL;
using namespace std;
const int MOD=1e9+7;
const int N=1e5+10,INF=1e9;
//int a[N];
void solve()
{
int a0,a1,b0,b1,ans=0;
cin>>a0>>a1>>b0>>b1;
for(int i=1;i<=b1/i;++i){
if(b1%i) continue;
if(__gcd(a0,i)==a1&&i/__gcd(i,b0)==b1/b0) ++ans;
int j=b1/i;
if(i!=j&&__gcd(a0,j)==a1&&j/__gcd(j,b0)==b1/b0) ++ans;
}
cout<<ans<<endl;
}
int main()
{
// #ifndef ONLINE_JUDGE
// freopen("title.in","r",stdin);
// freopen("title.out","w",stdout);
// #endif
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int _=1;
cin>>_;
while(_--){
solve();
}
// rep(i,1,_+1){
// cout<<"Case "<<i<<": ";
// solve();
// }
return 0;
}