#include <bits/stdc++.h>
using namespace std;
ifstream f ("pinex.in");
ofstream g ("pinex.out");
int t,nra,nrb,bst[300],st[3003],nr;
long long val,v[300],p[200010],a,b;
bool viz[1000003];
void solve(int k)
{
for(int i=st[k-1]+1;i<=nrb;++i)
{
st[k]=i;
long long prod=1;
for(int i=1;i<=k;++i) prod*=v[st[i]];
if(k%2) val=val+a/prod;
else val=val-a/prod;
if(k!=nrb) solve(k+1);
}
}
int main()
{
ios::sync_with_stdio(false);
for(int i=2;i<=1000000;++i)
{
if(!viz[i])
{
p[++nr]=i;
for(int j=2;i*j<=1000000;++j) viz[i*j]=1;
}
}
f>>t;
for(int i=1;i<=t;++i)
{
f>>a>>b;
int k=1;
nrb=0;
val=0;
while(p[k]*p[k]<=b&&b!=1)
{
if(b%p[k]==0)
{
v[++nrb]=p[k];
while(b%p[k]==0) b/=p[k];
}
++k;
}
if(b!=1) v[++nrb]=b;
solve(1);
g<<a-val<<'\n';
}
return 0;
}