#include<cstdio>
#define N 30000010
#define ll long long
using namespace std;
const ll K=1e7,mod=1e9+7;
ll f1,f2,f3,n,a,p[N],ans;
int vis[N],mu[N],len,T;
ll fastpow(ll a,ll b)
{
a=(a+mod)%mod;
b%=(mod-1);
ll s=1;
while(b)
{
if(b&1) s=s*a%mod;
a=a*a%mod, b>>=1;
}
return s;
}
ll getphi(ll a)
{
ll s=a;
for(ll i=1;p[i]*p[i]<=a;i++)
if(a%p[i]==0)
{
s=s/p[i]*(p[i]-1);
while(a%p[i]==0) a/=p[i];
}
if(a>1) s=s/a*(a-1);
return s%mod;
}
ll f(ll a)
{
return (fastpow(f1-1,a)+(a%2?-1:1)*(f1-1)+mod)%mod;
}
int main()
{
mu[1]=1;
for(int i=2;i<=K;i++)
{
if(!vis[i]) p[++len]=i,mu[i]=-1;
for(int j=1;i*p[j]<=K&&j<=len;j++)
{
vis[i*p[j]]=1;
if(i%p[j]) mu[i*p[j]]=-mu[i];
else break;
}
}
for(int i=1;i<=K;i++) mu[i]+=mu[i-1];
scanf("%d",&T);
while(T--)
{
scanf("%lld%lld",&n,&a);
f2=f3=ans=0;
for(ll l=1,r;l<=a;l=r+1)
{
r=a/(a/l);
f2=(f2+(a/l)*(a/l)%mod*(mu[r]-mu[l-1]+mod)%mod)%mod;
f3=(f3+(a/l)*(a/l)%mod*(a/l)%mod*(mu[r]-mu[l-1]+mod)%mod)%mod;
}
f1=(f3+f2*3+2)%mod*fastpow(6,mod-2)%mod;
for(ll i=1;i*i<=n;i++)
{
if(n%i) continue;
ans=(ans+f(i)*getphi(n/i)%mod)%mod;
if(i*i!=n) ans=(ans+f(n/i)*getphi(i)%mod)%mod;
}
printf("%lld\n",ans*fastpow(n,mod-2)%mod);
}
}
请大佬帮忙